C言語でポリモーフィズムを実現するには、どうすればいいですか?

C言語では、ポリモーフィズムを実装するには、関数ポインターと構造体を使用します。具体的な手順は以下の通りです。

  1. 異なる派生クラスのメンバー関数を指すための関数ポインタメンバーを含むベース構造体を定義します。
typedef struct {
    void (*func)();
} Base;
  1. 自明クラスの構造を定義し、そこで具体的なメンバー関数を定義します。
typedef struct {
    Base base;
    // 派生类的其他成员
} Derived;
  1. 派生クラスのメンバー関数を実装する。
void derived_func() {
    // 派生类的具体实现
}
  1. 派生クラスのメンバ関数を基本クラスの関数ポインタに代入する。
Derived derived;
Base* base = (Base*)&derived;
base->func = derived_func;
  1. 多態関数を呼び出す。
base->func();

これによって、C言語でのポリモーフィズムが実現されました。実行時に、関数ポインタが指す具体的なメンバー関数に基づいて、異なる派生クラスの実装が呼び出されます。

bannerAds