问题是,第 4 版 C++ 编程语言说:
在这种特殊情况下,如果您忘记删除复制或移动操作,也不会造成任何伤害。对于用户已显式声明析构函数的类,不会隐式生成移动操作。 此外,在这种情况下不推荐生成复制操作(第 44.2.3 节)。这可能是显式定义析构函数的一个很好的理由,即使编译器会隐式提供一个析构函数(第 17.2.3 节)。
我试过这段代码:
#include <iostream>
class Foo {
public:
~Foo() {}
}
int main() {
Foo x;
Foo y(x);
return 0;
}
并且这里没有错误和例外。我知道应该在 c++98 中隐式生成复制构造函数,但是 4th 说不推荐使用复制。这是什么意思?