2011-06-23 6 views

答えて

11

タイプはありません。これは、標準によって特定されていない実装の詳細です。 これは言語の一部ではありません。

C++では、仮想テーブルまたは仮想 "ポインタ"が必要であるとは言いません(C++ツールチェーンでRTTIを実装するのが最も一般的です)。

また、分析が間違っています。 GCCでは、通常それぞれオブジェクトは、そのオブジェクトタイプの関連する仮想テーブルを指すvptrを取得します。オブジェクトにはポインタがあり、タイプにはテーブルがあります。

+0

awwは、あなたの答えはノー楽しい:( – Blindy

+0

@Blindyではありません:。。それは完全に誤解を招くようではありません少なくとも、 –

+0

こんにちは 私の理解するのvtableによると、クラスレベルで形成されて あなたが言っているように、その「GCCでは、通常、各オブジェクト 各オブジェクトが独自のvptrを取得しており、すべてが同じvtableを指している場合は、異なるvptrポインタを作成する必要があるかどうかを判断するために、そのオブジェクトタイプの関連する仮想テーブルを指すvptrを取得します。私たちは静的なクラスレベルのvptrを作成することができます。 –

2

ほとんどの実装で使用されていますが、標準では仮想テーブルポインタの存在を保証しません。

結果として、タイプはありません。これは単にポインタの配列です。

+1

ポインタの配列でもありません。それはC++のコンストラクトの表現を持たない。 –

1

コンパイラに依存する型です。コンパイラが理解している限り、何でも構いません。言語がvptrについて何も言わないので、どのプログラマもコード内でそれを使用しないので、実行時の多態性を実装するために任意のの任意のタイプを自由に作成することができます。そのタイプは、C++言語に準拠する必要はありません。

関連する問題