1

私の知る限り、必要に応じてデフォルトのコンストラクターが作成されます。実際には、コンパイラは、呼び出す必要がある場合にのみ実際に作成することを意味します。

fc と gc の 2 つのファイルがあり、両方にデフォルトのコンストラクターを必要とするオブジェクト作成コードがあるとします。コンパイラはどのようにして複数のデフォルト コンストラクターの作成を防止しますか? 1つだけを作成することをどのように「知る」のですか? 私はそれを2つのファイルで使用し、自分で実装しませんでしたが。

私の教授。インラインと関係があると言って、それについて確認するように言いました。

助言がありますか?

4

1 に答える 1

0

あなた (そしておそらくあなたの教授) は誤解しています。
C++ では、関数を何度でも宣言できますが、その関数の定義は 1 つだけです。これは、One Definition Ruleの単純化された定義です。2 つの別々の翻訳単位でオブジェクトを作成した場合でも。オブジェクト作成のためにコンパイラが呼び出すコンストラクタは、一度だけ定義されます。

あなたの質問に答える
ために、1つだけを作成することをどのように知っていますか?
C++ 標準で定義された 1 つの定義規則に準拠する必要があるため、唯一の定義を作成するようにプログラムされています。

1 つの定義規則の例外は、インライン関数です。インライン関数は、すべての定義がまったく同じであれば、複数の定義を持つことができます。

于 2013-04-12T12:35:08.703 に答える