gpt4 book ai didi

c++ - 默认构造函数创建时间和多个定义

转载 作者:太空宇宙 更新时间:2023-11-04 14:08:22 24 4
gpt4 key购买 nike

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

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

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

有什么建议吗?

最佳答案

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

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

一个定义规则的异常(exception)是内联函数。内联函数允许有多个定义,前提是所有定义都完全相同。

关于c++ - 默认构造函数创建时间和多个定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15971427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com