在下面的例子中 隐式地,不会创建移动构造函数和移动赋值运算符。我知道。
那么,复制构造函数和复制赋值运算符是生成的吗?
未定义的复制构造函数是隐式创建的吗?
class X
{
public:
virtual ~X() = default;
}
我引用的链接如下:
复制构造函数是否生成?
复制构造函数是默认的,但现在这种情况已被弃用,从class.copy.ctor#6中可以看出:
如果类定义没有显式声明复制构造函数,则隐式声明非显式复制构造函数。 如果类定义声明了移动构造函数或移动赋值运算符,则隐式声明的复制构造函数被定义为已删除; 否则,它是默认的([dcl.fct.def])。 如果类具有用户声明的复制赋值运算符或用户声明的析构函数([depr.impldec]),则不推荐使用后一种情况。
(强调我的)
由于您确实有一个用户声明的析构函数,因此已弃用。