純粋仮想関数
提供: C++入門
スポンサーリンク
純粋仮想関数 (pure virtual function) は、仮想関数の一種です。純粋仮想関数は、実装がなく、プロトタイプが宣言されているだけの関数です。
- 仮想関数のプロトタイプに 0 を代入します。 virtual void f() = 0; とすると実装が不要になります。
- 実装を持たない仮想関数 を 純粋仮想関数 と呼びます。
- 純粋仮想関数 を持つクラスは 抽象クラス と呼ばれます。抽象クラスは、インスタンス化できません。
読み方
- 純粋仮想関数
- じゅんすい かそう かんすう
- pure virtual function
- ぴゅあ ばーちゃる ふぁんくしょん
目次
概要
純粋仮想関数 (pure virtual function) は、仮想関数の一種です。純粋仮想関数は、実装がなく、プロトタイプが宣言されているだけの関数です。 純粋仮想関数があるクラスは、そのままインスタンス化はできず、クラスを継承し、純粋仮想関数をオーバーライドして、実装しなければなりません。 このようなクラスは、抽象クラスと呼ばれます。
純粋仮想関数の宣言方法
純粋仮想関数 の宣言は簡単で、プロトタイプ宣言に = 0 をつけるだけです。
#include <iostream> using namespace std; class B { public: // 純粋仮想関数 virtual void f() = 0; };
virtual が 仮想関数 であることを意味します。 = 0 が純粋であることを意味します。 純粋の意味は、このクラスを直接しようせず、派生クラスを利用することを意味します。
純粋仮想関数の例
ソースコード pure_virtual_function_1.cpp
#include <iostream> using namespace std; class B { public: virtual void f() = 0; }; class C1 : public B { public: void f() { cout << __PRETTY_FUNCTION__ << endl; } }; int main(int argc, char const* argv[]) { C1 c1; c1.f(); return 0; }
コンパイル
c++ pure_virtual_function_1.cpp -o pure_virtual_function_1
実行例
% ./pure_virtual_function_1 virtual void C1::f()
まとめ
純粋仮想関数 を簡単にまとめます。
- 仮想関数のプロトタイプに 0 を代入します。 virtual void f() = 0; とすると実装が不要になります。
- 実装を持たない仮想関数 を 純粋仮想関数 と呼びます。
- 純粋仮想関数 を持つクラスは 抽象クラス と呼ばれます。抽象クラスは、インスタンス化できません。
関連項目
ツイート
スポンサーリンク