C++基礎講座7回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
第7回はオーバーライド(仮想関数)という機能です
オーバライドというのは
継承クラスで親クラスと同名でかつ戻り値引数が全く同じの関...
継承クラスで関数の仕様を再定義する方法です
(オーバロードと混同しないよう注意、オーバライドとは関係...
オーバライドの説明に入る前に
継承クラスのコンストラクタ、デストラクタがどのように
呼ばれるのか見てみましょう
#include <iostream>
using namespace std;
class Parent
{
public:
// コンストラクタ
Parent()
{
cout << "親クラスコンストラクタが呼ばれました...
}
// デストラクタ
~Parent()
{
cout << "親クラスデストラクタが呼ばれました" ...
}
};
class Child: public Parent
{
public:
// コンストラクタ
Child()
{
cout << "子クラスコンストラクタが呼ばれました...
}
// デストラクタ
~Child()
{
cout << "子クラスデストラクタが呼ばれました" ...
}
};
// main関数(クラスの外部)
int main()
{
Child ch;
cout << endl;
cout << "なんか処理する" << endl;
cout << endl;
return 0;
}
親クラスと子クラスのコンストラクタと
親クラスと子クラスのデストラクタが
両方呼ばれることに気づくはずです
(さらにいうとデストラクタはコンストラクタの逆順(子→親)...
Java,C#などをやっている人は
派生クラスだけ呼ばれなくて気持ち悪いと思うかもしれませんが
C++は両方よばれます
さて、本題に入りたいと思います
オーバライド(継承クラスで仕様を変えたい)を実践するには...
// オーバーライド
#include <iostream>
using namespace std;
class Parent
{
public:
void Show()
{
cout << "親クラスShow" << endl;
}
};
class Child: public Parent
{
public:
// オーバーライド
void Show()
{
cout << "子クラスShow、オーバーライド" << endl;
}
};
// main関数(クラスの外部)
int main()
{
Parent pt;
Child ch;
pt.Show();
ch.Show();
return 0;
}
Parent型の変数ptのほうのShow関数の呼び出しは親クラスのほう
一方、Child型の変数chのほうのShow関数の呼び出しは子クラス...
がよばれていることがわかります。
このように、継承クラスで基本クラスと全く同じ関数を定義す...
継承時にはオーバライドされた関数が呼ばれます。
次回は仮想関数によるポリモーフィズムです。
%% 次回でC++基礎講座は一旦終わりになります。%%
もうちょっとだけ続くんじゃよ
#vote((^ω^)わかったお[1],普通[0],。(`ω´#)。わかりに...
終了行:
第7回はオーバーライド(仮想関数)という機能です
オーバライドというのは
継承クラスで親クラスと同名でかつ戻り値引数が全く同じの関...
継承クラスで関数の仕様を再定義する方法です
(オーバロードと混同しないよう注意、オーバライドとは関係...
オーバライドの説明に入る前に
継承クラスのコンストラクタ、デストラクタがどのように
呼ばれるのか見てみましょう
#include <iostream>
using namespace std;
class Parent
{
public:
// コンストラクタ
Parent()
{
cout << "親クラスコンストラクタが呼ばれました...
}
// デストラクタ
~Parent()
{
cout << "親クラスデストラクタが呼ばれました" ...
}
};
class Child: public Parent
{
public:
// コンストラクタ
Child()
{
cout << "子クラスコンストラクタが呼ばれました...
}
// デストラクタ
~Child()
{
cout << "子クラスデストラクタが呼ばれました" ...
}
};
// main関数(クラスの外部)
int main()
{
Child ch;
cout << endl;
cout << "なんか処理する" << endl;
cout << endl;
return 0;
}
親クラスと子クラスのコンストラクタと
親クラスと子クラスのデストラクタが
両方呼ばれることに気づくはずです
(さらにいうとデストラクタはコンストラクタの逆順(子→親)...
Java,C#などをやっている人は
派生クラスだけ呼ばれなくて気持ち悪いと思うかもしれませんが
C++は両方よばれます
さて、本題に入りたいと思います
オーバライド(継承クラスで仕様を変えたい)を実践するには...
// オーバーライド
#include <iostream>
using namespace std;
class Parent
{
public:
void Show()
{
cout << "親クラスShow" << endl;
}
};
class Child: public Parent
{
public:
// オーバーライド
void Show()
{
cout << "子クラスShow、オーバーライド" << endl;
}
};
// main関数(クラスの外部)
int main()
{
Parent pt;
Child ch;
pt.Show();
ch.Show();
return 0;
}
Parent型の変数ptのほうのShow関数の呼び出しは親クラスのほう
一方、Child型の変数chのほうのShow関数の呼び出しは子クラス...
がよばれていることがわかります。
このように、継承クラスで基本クラスと全く同じ関数を定義す...
継承時にはオーバライドされた関数が呼ばれます。
次回は仮想関数によるポリモーフィズムです。
%% 次回でC++基礎講座は一旦終わりになります。%%
もうちょっとだけ続くんじゃよ
#vote((^ω^)わかったお[1],普通[0],。(`ω´#)。わかりに...
ページ名: