2013年12月3日火曜日

C++ 継承の利用

今回は継承したクラスのオブジェクトの使用例として、サンプルコードを掲載します(^^)
Foodクラスを継承したVegetableクラスの利用です。

#include <iostream>
#include <string.h>

using namespace std;

class Food
{
public:
    void SetPrice(int price);
    int GetPrice(void);
private:
    int m_price;
};

class Vegetable : public Food
{
public:
    void SetFarmName(const char *farm);
    char *GetFarmName(void);
private:
    char m_strFarmName[32];  //勝手に32文字制限
};

void Food::SetPrice(int price)
{
    m_price = price;
}

int Food::GetPrice(void)
{
    return m_price;
}

void Vegetable::SetFarmName(const char *farm)
{
    strncpy(m_strFarmName, farm, 32);
}

char *Vegetable::GetFarmName(void)
{
    return m_strFarmName;
}

int main(void)
{
    Vegetable Pumpkin;  //カボチャ

    Pumpkin.SetPrice(398);  //398円
    cout << "Price = " << Pumpkin.GetPrice() << endl;

    Pumpkin.SetFarmName("Pascal's Farm"); //生産者 ブレーズ・パスカル
    cout << "Farm Name = " << Pumpkin.GetFarmName() << endl;

    return 0;
}

実行例
# ./test
Price = 398
Farm Name = Pascal's Farm

どうでしょうか、継承に魅力に憑りつかれ、C++にハマってくる気がしませんか?(^^;)

今日の名言
時は悲しみと口論の傷を癒やす。人は皆変わる。
過去の自分はもはや現在の自分ではない。悩む者も悩ます者も、時が経てば別人になる。
                                 ブレーズ・パスカル

私は何か問題を考えたい時、心の引き出しを一つ開ける。問題が解決するとその引き出しを
閉め、また次には別のを開ける。眠りたい時には全部の引き出しを閉める。
                                 ナポレオン

今から一年も経てば、私の現在の悩みなど、およそくだらないものに見えることだろう。
                                 サミュエル・ジョンソン

私達の人生を彩る様々な事象のうち、およそ90パーセントは正しく、10パーセントは誤りで
ある。幸福を願うのなら、やり方としては、正しい90パーセントに力を集中し、誤った
10パーセントは無視すればよい。もし苦悩と悲惨を願い、胃潰瘍になりたいのなら、誤った
10パーセントに力を集中し、栄光に満ちた90パーセントを無視すればよい。
                                 デール・カーネギー