コンテンツにスキップ

最終更新:2026-10-12

C++ 純粋仮想関数と抽象クラス

著者について:

個人公式アカウント:

wechat

1.純粋仮想関数と抽象クラス

C++における純粋仮想関数(抽象関数)とは、実装を持たない仮想関数です!宣言だけでよく、宣言の中で0を代入することで純粋仮想関数を宣言します!

// 抽象类
Class A {
public: 
    virtual void show() = 0; // 纯虚函数
    /* Other members */
}; 

  • 純粋仮想関数:関数本体を持たない仮想関数
  • 抽象クラス:純粋仮想関数を含むクラス

抽象クラスは新しいクラスを派生させるための基底クラスとしてのみ使用でき、抽象クラスのオブジェクトを生成することはできません。抽象クラスのポインタと参照が指すのは、抽象クラスから派生したクラスのオブジェクトです!

コード例:abstract_base.h、pure_virtual.cpp

2.抽象クラスの実装

抽象クラスでは、メンバ関数内で純粋仮想関数を呼び出すことはできますが、コンストラクタ/デストラクタの内部で純粋仮想関数を使用することはできません。

抽象クラスから派生したクラスは、基底クラスのすべての純粋仮想関数を実装してはじめて、非抽象クラスになることができます。

// A为抽象类
class A {
public:
    virtual void f() = 0;  // 纯虚函数
    void g(){ this->f(); }
    A(){}  // 构造函数
};

class B : public A{
public:
    void f(){ cout<<"B:f()"<<endl;}  // 实现了抽象类的纯虚函数
};

コード例:abstract.cpp

3.重要なポイント

4.完全な例

抽象クラスは派生クラスによって継承・実装されます!

コード例:derived_full.cpp

関連トピック

コメント