抽象クラス
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
virtualキーワードで仮想関数を宣言し、必ず子クラスでオーバーライドしなければならない指定が可能です。
以下のように書くと、必ず子クラスでのオーバーライドが必須となります。
スポンサーリンク
class parent { public: virtual void a() = 0; virtual void b() = 0; };
virturalキーワードで仮想関数を宣言し、続けて「 = 0;」と0を代入する書き方で、その仮想関数は子クラスで必ず上書きが必要であるという意味を持ちます。
このような上書き必須の仮想関数を持つクラスを、抽象クラスと呼びます。
#include <iostream> class parent { public: virtual void a() = 0; virtual void b() = 0; }; // parentクラスを継承 class child : public parent { public: void a() { std::cout << "child.a()\n"; } void b() { std::cout << "child.b()\n"; } }; int main() { child child_obj; }
と、子クラスでオーバーライドしなければなりません。
このとき、childクラスでa(), b()が定義されていないと、childクラスのインスタンス化ができずに、コンパイルエラーとなります。
また、抽象クラス自体をインスタンス化しようとして・・・
parent parent_obj;
のように書くのもコンパイルエラーとなります。
抽象クラス自体は、インスタンス化ができません。
スポンサーリンク
>> 次の記事 : 仮想クラス
<< 前の記事 : 仮想関数・virtualキーワード
- - 関連記事 -
- 派生クラスのコンストラクタ・デストラクタ
- 派生クラスによる関数の隠蔽
- 仮想クラス
- 仮想関数・virtualキーワード
- 親クラスの引数ありコンストラクタを子クラスから初期化・動的サイズのスタック
- クラスのアクセス制限キーワード・private, protected, public
- スタックを実装したクラスを拡張する
- クラス継承・親クラスと子クラス
- static・静的メンバ関数
- static・静的メンバ変数
- 定数のconstメンバ関数をクラスに宣言
- 定数のconstメンバ変数をクラスに宣言
- フレンドクラス・friend
- フレンド関数・friend
- クラスの中にメンバ関数(メソッド)を実装する
- explicit・コンストラクタを明示する
- クラスで自動的に生成されるメンバ関数
- コピーコンストラクタ
- 引数つきのコンストラクタを持つクラス定義
- コンストラクタで自動的に初期化する
スポンサーリンク