こんばんは。ddnpです。
ネタ元:オブジェクト指向におけるFizzBuzz問題
乗っかります。乗っかります!
て、アレ?もう遅いですか?^^;;
#include <string>
#include <iostream>
#include <memory>
class Animal
{
private:
std::string sound_;
int sound_loop_;
Animal(
void) =
0;
protected:
Animal(
const std::string& sound,
int sound_loop =
1)
: sound_(sound), sound_loop_(sound_loop)
{
};
public:
void Sound(std::ostream& sound_to = std::cout)
const
{
for (
int i =
0; i < sound_loop_; ++i )
sound_to << sound_;
sound_to << std::endl;
}
void SetCount(
int count)
{
sound_loop_ = count;
}
virtual ~Animal()
{
}
};
class Cat :
public Animal
{
public:
Cat(
void)
: Animal(
"にゃー")
{
}
};
class Dog :
public Animal
{
public:
Dog(
void)
: Animal(
"わん")
{
}
};
int main(
void)
{
std::auto_ptr<Animal> pAnimal(
new Dog());
pAnimal->Sound();
pAnimal->SetCount(
3);
pAnimal->Sound();
pAnimal = std::auto_ptr<Animal>(
new Cat());
pAnimal->Sound();
return 0;
}
うまく貼れたかな?ドキドキ