第7回はオーバーライドという機能です

オーバライドというのは
継承クラスで親クラスと同名の関数を定義でき、
関数の仕様を上書きする方法です
(オーバロードと混同しないよう注意)

オーバライドの説明に入る前に
継承クラスのコンストラクタ、デストラクタがどのように
呼ばれるのか見てみましょう

    #include <iostream>
    using namespace std;

    class Parent
    {
    public:

	    // コンストラクタ
	    Parent()
        {
            cout << "親クラスコンストラクタが呼ばれました" << endl;
        }
    	
        // デストラクタ
	    ~Parent()
        {
            cout << "親クラスデストラクタが呼ばれました" << endl;
        }
    	
    };

    class Child: public Parent
    {
    public:

        // コンストラクタ
        Child()
        {
            cout << "子クラスコンストラクタが呼ばれました" << endl;
        }

        // デストラクタ
        ~Child()
        {
            cout << "子クラスデストラクタが呼ばれました" << endl;
        }
    };

    // main関数(クラスの外部)
    int main()
    {
        Child ch;

        cout << endl;
        cout << "なんか処理する" << endl;
        cout << endl;
    	
	    return 0;
    }

親クラスと子クラスのコンストラクタと
親クラスと子クラスのデストラクタが
両方呼ばれることに気づくはずです
(さらにいうとデストラクタはコンストラクタの逆順(子→親)に呼ばれています)

Java,C#などをやっている人は
派生クラスだけ呼ばれなくて気持ち悪いと思うかもしれませんが
C++は両方よばれます


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS