C++での抽象クラスの定義と使用方法
C++言語において抽象クラスとは、インスタンス化することができず、他のクラスの基底クラスとしてのみ使用可能な特殊なクラスのことです。抽象クラスは、具体的な実装を提供せずに、関連するメソッド群のインターフェイスを定義するために一般的に用いられます。以下は、抽象クラスの定義および使用手順です。
- 純粋仮想関数(実装のない仮想関数)をクラス定義に追加すると抽象クラスを定義できます。純粋仮想関数は、関数宣言の後に「=0」を追加することで識別できます。
class AbstractClass {
public:
virtual void foo() = 0; // 纯虚函数
};
- サブクラスの派生: 抽象クラスの純粋仮想関数を実装するために、具体的なサブクラスを派生させます。
class ConcreteClass : public AbstractClass {
public:
void foo() {
// 实现纯虚函数
}
};
- 抽象クラスを使用する:抽象クラスへのポインタや参照を通じて、具体的なサブクラスにアクセスする。
AbstractClass* obj = new ConcreteClass();
obj->foo(); // 调用子类实现的纯虚函数
delete obj;
抽象クラスはインスタンス化できないので、ポインタや参照でのアクセスが必要となり、動的メモリ確保によりオブジェクトを作成する必要があります。また、抽象クラスを継承したクラスで、すべての純粋仮想関数の実装がなされていない場合、そのクラスも抽象クラスとなりインスタンス化できません。