gpt4 book ai didi

c++ - 编译器是否每次都实例化默认构造函数和复制构造函数以及复制赋值运算符?

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

标题中的问题差不多。考虑简单程序中的一个空类,比如

struct A{ };

int main(){ }

编译器是否必须实例化所有这些函数,或者它的实现已定义?我的意思是,在仅调用它们的情况下对这些函数进行初始化(我想,编译器可能会确定它们是否以某种方式被调用)。

最佳答案

特殊成员函数是隐式声明的,除非它们是odr-used。 ,在这种情况下,它们将被隐式定义。

来自 N3337,§12/1 [特殊]

The default constructor (12.1), copy constructor and copy assignment operator (12.8), move constructor and move assignment operator (12.8), and destructor (12.4) are special member functions. [ Note: The implementation will implicitly declare these member functions for some class types when the program does not explicitly declare them. The implementation will implicitly define them if they are odr-used (3.2). See 12.1, 12.4 and 12.8. —end note ]

关于c++ - 编译器是否每次都实例化默认构造函数和复制构造函数以及复制赋值运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30634876/

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