「純粋仮想関数」の版間の差分

提供: C++入門
移動: 案内検索
 
行2: 行2:
 
* [[仮想関数]]のプロトタイプに 0 を代入します。 virtual void f() = 0; とすると実装が不要になります。
 
* [[仮想関数]]のプロトタイプに 0 を代入します。 virtual void f() = 0; とすると実装が不要になります。
 
* 実装を持たない[[仮想関数]] を [[純粋仮想関数]] と呼びます。
 
* 実装を持たない[[仮想関数]] を [[純粋仮想関数]] と呼びます。
* [[純粋仮想関数]] を持つクラスは '''抽象クラス''' と呼ばれます。抽象クラスは、インスタンス化できません。
+
* [[純粋仮想関数]] を持つクラスは [[抽象クラス]] と呼ばれます。抽象クラスは、インスタンス化できません。
  
 
'''読み方'''
 
'''読み方'''
行68: 行68:
 
* [[仮想関数]]のプロトタイプに 0 を代入します。 virtual void f() = 0; とすると実装が不要になります。
 
* [[仮想関数]]のプロトタイプに 0 を代入します。 virtual void f() = 0; とすると実装が不要になります。
 
* 実装を持たない[[仮想関数]] を [[純粋仮想関数]] と呼びます。
 
* 実装を持たない[[仮想関数]] を [[純粋仮想関数]] と呼びます。
* [[純粋仮想関数]] を持つクラスは '''抽象クラス''' と呼ばれます。抽象クラスは、インスタンス化できません。
+
* [[純粋仮想関数]] を持つクラスは [[抽象クラス]] と呼ばれます。抽象クラスは、インスタンス化できません。
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[仮想関数]]
 
* [[仮想関数]]

2016年1月14日 (木) 15:28時点における最新版

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

関連項目