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

Barbara Streisand
リリース: 2024-11-19 09:22:02
オリジナル
358 人が閲覧しました

Why are Virtual Constructors Absent in C  ?

C での仮想コンストラクターの回避 : Bjarne Stroustrup からの洞察

オブジェクト指向プログラミングでは一般にポリモーフィズムを可能にするために仮想関数を利用しますが、C には仮想コンストラクターの概念。この特殊性が多くの開発者を当惑させ、次のような疑問が生まれました: なぜこの機能が C にないのですか?

この機能がない理由を詳しく調べるために、C の作成者である Bjarne Stroustrup の知恵を求めてみましょう。 C スタイルとテクニックの FAQ に次の説明がありました:

「仮想呼び出しは、オブジェクトに関する部分的な情報が与えられたときに機能を取得するメカニズムです。具体的には、仮想呼び出しオブジェクトの特定の型ではなくインターフェイスのみを認識している場合でも、関数を呼び出すことができます。ただし、オブジェクトの作成には完全な情報、特にインスタンス化するオブジェクトの正確な型を知っている必要があるため、コンストラクターの呼び出しを仮想化することはできません。 🎜>

この論理的推論は、C に仮想コンストラクターがない理由を説明します。この制限にもかかわらず、Stroustrup の FAQ では、仮想コンストラクターに頼らずに同様の機能を実現する代替方法を提供するコード スニペットも提供されています。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート