1

据我所知,默认构造函数是在需要时创建的。实际上意味着编译器仅在需要调用它时才实际创建它。

假设我有两个文件,fc 和 gc,它们都有对象创建代码,需要默认构造函数。编译器如何防止创建多个默认构造函数..?它如何“知道”只创建一个?即使我在两个文件中使用它并且没有自己实现它。

我的教授。告诉我它与内联有关,并告诉我检查一下。

有什么建议么?

4

1 回答 1

0

你(很可能是你的教授)误解了。
在 C++ 中,您可以根据需要多次声明一个函数,但该函数只能有一个定义。这是单一定义规则的简单定义。即使您在两个单独的翻译单元中创建对象。编译器为创建对象而调用的构造函数只定义一次。

所以回答你的问题,
它怎么知道只创建一个?
它被编程为创建一个且唯一的定义,因为它需要遵守 C++ 标准定义的一个定义规则。

一个定义规则的例外是内联函数。如果所有定义完全相同,则允许内联函数具有多个定义。

于 2013-04-12T12:35:08.703 回答