ホームページ  >  記事  >  バックエンド開発  >  C メンバーは静的メンバーと仮想メンバーの両方になれますか?

C メンバーは静的メンバーと仮想メンバーの両方になれますか?

DDD
DDDオリジナル
2024-10-30 19:09:30423ブラウズ

Can C   Members Be Both Static and Virtual?

C メンバーは静的と仮想の両方になれますか?

C では、メンバーを静的と仮想の両方として宣言することはできません。 static virtual member(); のような宣言をコンパイルします。

ただし、次のメソッドを使用して同様の効果を実現できます。

  • 関数を分離する: 静的関数と非静的関数を定義します。 -同じ名前の静的仮想関数。非仮想関数はクラス上で直接呼び出すことも、派生クラスでオーバーライドすることもできますが、静的関数は基本クラス実装へのアクセスを提供します。
  • オーバーロードされた関数: オーバーロードされた関数を宣言します。同じ名前 (1 つは静的仮想、もう 1 つは非静的仮想)。コンパイラは、呼び出しコンテキストに基づいて適切な関数を選択します。

例を次に示します。

<code class="cpp">struct Object
{
    static const TypeInformation& GetTypeInformation();
    virtual const TypeInformation& GetTypeInformation() const;
};

struct SomeObject : public Object
{
    static const TypeInformation& GetTypeInformation();
    virtual const TypeInformation& GetTypeInformation() const override;
};</code>

これにより、オブジェクト (object->) の両方で GetTypeInformation() を呼び出すことができます。 ;GetTypeInformation()) およびクラス (SomeObject::GetTypeInformation())。 Object::GetTypeInformation() は基本クラスの実装を返し、SomeObject::GetTypeInformation() はオーバーライドされたバージョンを呼び出します。

以上がC メンバーは静的メンバーと仮想メンバーの両方になれますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。