純粋仮想関数の '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 サイトの他の関連記事を参照してください。