gpt4 book ai didi

c++ - 即使类不包含数据,C++ 14 是否仍会生成默认函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:24 26 4
gpt4 key购买 nike

在中断 16 年后,我正在重读 Scott Meyers 的 Effective C++。虽然我没有读过最新的 C++ 标准,但我注意到自 Effective C++ 第二版编写以来 C++ 发生了变化。在他的书的第三版中,Scott Meyers 提到即使你有一个空类,这意味着没有任何东西可以初始化或分配,C++ 编译器仍然会生成至少 3 个默认函数,即默认构造函数、默认复制构造函数、赋值运算符,可能还有其他一些函数。根据迈耶斯先生的说法,以下代码将导致上述功能的生成。

class Empty {}
Empty E1; // Default constructor.
Empty E2 ( E1 ); // Default copy constructor.
E1 = E2; // Default assignment operator.

考虑到确实没有什么可初始化的,因为类是空的,C++ 是否仍会为声明的函数生成某种代码?

最佳答案

probably some other functions.

是的,移动构造函数和移动赋值运算符。就是这样。

Considering that there really is nothing to initialize, as the class is empty, does the C++ still generate some sort of code for the stated functions?

有时。发生的情况是那些特殊成员已声明,但未定义。它们仅在使用时被定义(即 odr-usedconstant evaluated ),否则不会为它们生成代码,因为它们未定义。

因为你有一个空类,如果定义了特殊成员,它们将什么都不做。

关于c++ - 即使类不包含数据,C++ 14 是否仍会生成默认函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52138353/

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