0

C++ で final クラスを実装する方法を学習しているときに、次のようなステートメントを見つけました。

「最も派生したクラスの ctor は、仮想基本クラスの ctor を直接呼び出す必要があります。」

ただし、C++ 標準のステートメントの元が見つかりません。(N3126)

正確なページ番号を誰が教えてくれますか?

前もって感謝します。

4

2 に答える 2

1

C++03 では、§ 12.6.2 5 です。

初期化は次の順序で進行します。

— 最初に、以下で説明する最も派生したクラスのコンストラクターに対してのみ、仮想基底クラスは、基底クラスの有向非巡回グラフの深さ優先の左から右へのトラバーサルに現れる順序で初期化されます。 left-to-right」は、派生クラス base-specifier-list 内の基本クラス名の出現順序です。

...

C++0x (N3126) の現在のドラフトでは、§ 12.6.2 10 で、270 ページです。

非委任コンストラクターでは、初期化は次の順序で進行します。

— まず、最も派生したクラス (1.8) のコンストラクターの場合のみ、仮想基底クラスは、基底クラスの有向非巡回グラフの深さ優先の左から右への走査に現れる順序で初期化されます。 -to-right」は、派生クラス base-specifier-list 内の基本クラスの出現順序です。

...

于 2010-12-11T16:15:34.747 に答える
0

N3126 はC++ 標準ではありません。

これは、今後の C++ 標準のドラフトです。

とにかく、初期化に関する情報は、派生クラスの初期化に関するセクションにあります。

于 2010-12-11T16:11:42.590 に答える