- 追加された行はこの色です。
- 削除された行はこの色です。
第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++は両方よばれます