ホームページ > バックエンド開発 > C++ > 純粋仮想関数が「0」で初期化されるのはなぜですか?

純粋仮想関数が「0」で初期化されるのはなぜですか?

Patricia Arquette
リリース: 2024-11-26 14:32:09
オリジナル
164 人が閲覧しました

Why are Pure Virtual Functions Initialized with `0`?

純粋仮想関数の '0' による初期化について理解する

純粋仮想関数を宣言するとき、それらは常に に割り当てられることに気づくかもしれません。値 0:

virtual void fun() = 0;
ログイン後にコピー

この実践では、なぜ純粋仮想関数が

間違った仮定

当初、値 0 が純粋仮想関数に割り当てられ、対応する vtable エントリが NULL に設定されると信じていたかもしれません。しかし、この仮定は正しくありません。純粋仮想関数に割り当てられた値は、必ずしも vtable エントリを NULL に設定するとは限りません。

「0」の本当の理由

=0 構文の使用純粋仮想関数の起源は、Bjarne Stroustrup の C に関する初期の研究に遡ります。彼は、「pure」のような新しいキーワードを導入するのではなく、=0 構文を選択しました。これは、当時の C コミュニティに受け入れられる可能性が高いと信じていたためです。

Stroustrup 自身が著書の中で述べているように、 「C の設計と進化」では、=0 構文は vtable エントリを NULL に設定することを目的としていませんでした。さらに、vtable エントリを NULL に設定することは、純粋仮想関数にとって理想的な実装戦略ではありません。

結論

純粋仮想関数の 0 による初期化は、 vtable エントリを NULL に設定します。代わりに、=0 構文は、C 開発の初期段階では、純粋に読みやすさと互換性の理由から選択されました。

以上が純粋仮想関数が「0」で初期化されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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