9

v-table (仮想メソッド テーブル) は C++ 仕様の一部ですか、それとも仮想メソッド ルックアップを解決するのはコンパイラ次第ですか?

仕様の一部である場合: なぜですか?

コンパイラに依存していると思いますが、仕様の一部だと誰かが私に言いました。

参考文献大歓迎です!

4

2 に答える 2

13

1.7 C++ メモリ モデル 3 [...] 参照や仮想関数など、言語のさまざまな機能には、プログラムからはアクセスできないが実装によって管理される追加のメモリ位置が含まれる場合があります。[...]

そこにあります。実装次第です。

于 2010-09-09T08:34:12.507 に答える
4

いいえ、言語仕様の一部ではありません。標準では、仮想関数の呼び出しを解決する方法を指定していますが、必要な結果を得るためにコンパイラが実装するメカニズムは指定していません。

「否定的な」参照 (つまり、標準が v テーブルを義務付けていない場所) を提供することは困難ですが、仮想関数呼び出しの標準の関連部分は 5.2.2 [expr.call] および 10.3 [class.virtual] です。 ]。

于 2010-09-09T08:32:10.147 に答える