純粋仮想関数

提供: C++入門
2016年1月14日 (木) 14:48時点におけるDaemon (トーク | 投稿記録)による版

移動: 案内検索
スポンサーリンク

純粋仮想関数 (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; とすると実装が不要になります。
  • 実装を持たない仮想関数純粋仮想関数 と呼びます。
  • 純粋仮想関数 を持つクラスは 抽象クラス と呼ばれます。抽象クラスは、インスタンス化できません。

関連項目




スポンサーリンク