ホームページ  >  記事  >  バックエンド開発  >  C には仮想コンストラクターがないのはなぜですか?

C には仮想コンストラクターがないのはなぜですか?

DDD
DDDオリジナル
2024-11-22 09:58:10719ブラウズ

Why Doesn't C   Have Virtual Constructors?

仮想コンストラクターが C のツールキットの一部ではない理由

多くのプログラミング言語とは異なり、C はそのフレームワークに仮想コンストラクターを組み込みません。この設計上の決定の背後にある理論的根拠を明らかにするには、仮想呼び出しとコンストラクターの固有の特性を詳しく調べる必要があります。

仮想呼び出しにより、特定のオブジェクト タイプではなく既知のインターフェイスに基づいて関数を呼び出すことができます。この機能は、ポリモーフィックな動作を調整するのに非常に貴重であることがわかります。ただし、オブジェクトを作成するときは、その正確な型を正確に知ることが最も重要です。

C のアーキテクトである Bjarne Stroustrup は、この概念を簡潔に次のように述べています。「仮想呼び出しは、部分的な情報を与えられて作業を完了するメカニズムです。 .. オブジェクトを作成するには、完全な情報が必要です ... したがって、「コンストラクターへの呼び出し」を仮想にすることはできません。"

仮想コンストラクターは一見したように見えるかもしれませんが、望ましいことですが、それが存在しなくても同様の結果を達成することが妨げられるわけではありません。前述の FAQ エントリは、明示的な実装に頼らずに仮想コンストラクターの動作をエミュレートする実用的なアプローチを提案しています。

以上がC には仮想コンストラクターがないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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