据我所知,默认构造函数是在需要时创建的。 实际上意味着编译器实际上只在需要调用它时才创建它。
假设我有两个文件,f.c和g.c,它们都有对象创建代码,需要一个默认的构造函数。编译器如何阻止创建多个默认构造函数..?如何“知道”只创造一个?即使我在两个文件中使用它并且没有自己实现它。
我的教授。告诉我它与内联有关,并告诉我检查一下。
有什么建议吗?
答案 0 :(得分:0)
你(,很可能是你的教授)误解了 在C ++中,您可以根据需要多次声明一个函数,但该函数可以只有一个定义。这是 One Definition Rule 的简单定义。即使您在两个单独的翻译单元中创建对象。编译器调用对象创建的构造函数只定义一次。
所以回答你的问题,
如何知道只创建一个?
它被编程为创建一个唯一的定义,因为它需要符合C ++标准定义的一个定义规则。
一个定义规则的例外是内联函数。如果所有定义完全相同,则允许内联函数具有多个定义。