TMK

WindowsMobile5は言うこと聞かないね

目次

Blog 利用状況

ニュース

参加コミュニティ

書庫

日記カテゴリ

なんとなくやっちゃいけないことをしている希ガス

こんばんは。ddnpです。

ネタ元:オブジェクト指向におけるFizzBuzz問題
乗っかります。乗っかります!
て、アレ?もう遅いですか?^^;;

 

 

/* お題

class Program {
  public static void Main() {
    Animal animal;
    animal = new Dog();
    animal.Sound();
    animal.SetCount(3);
    animal.Sound();
    animal = new Cat();
    animal.Sound();
  }
}
上記のプログラムを実行した結果が
わん
わんわんわん
にゃー
となるように Animal, Cat, Dog を実装しなさい。
*/


#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;
}

うまく貼れたかな?ドキドキ

投稿日時 : 2007年11月9日 19:55

コメントを追加

# re: なんとなくやっちゃいけないことをしている希ガス 2007/11/09 20:13 ddnp

他の方のソースを拝見するかぎり
言語こそ違えど、大体似てくるものですね。
R・田中一郎さんとか、とっちゃんさんとか。
まあびっくり。
#ソースやロジックのパクリは一切ありません。
#天地神明に誓って。いやほんとに。

仕事で使ったことのない std::auto_ptr<>
今回初めて使ってみたりしています。
使い方が違うかも。
全体的にツッコミ希望。

# re: なんとなくやっちゃいけないことをしている希ガス 2007/11/09 22:00 774RR

要望1: charT/Trait を使って template ベースにしてちょんまげ。
突っ込み1:Animal(void) = 0; これ何すか?
突っ込み2:俺は scoped_ptr か shared_ptr のほうが好きっす。

タイトル
名前
URL
コメント