仅声明默认虚析构函数时,是否隐式生成拷贝构造函数?
问题解答
针对你给出的类定义:
class X { public: virtual ~X() = default; };
- 关于拷贝构造函数与拷贝赋值运算符:编译器会隐式生成这两个成员函数,生成的版本是逐成员进行拷贝的默认实现,和没有声明析构函数时的默认拷贝行为一致。
- 关于是否会隐式创建未定义的拷贝构造函数:不会。编译器生成的拷贝构造函数是带有默认定义的,只要类的成员都支持拷贝操作,这个默认拷贝构造就能正常使用。
补充说明:在C++11及后续标准中,用户声明析构函数(包括用=default显式默认的)只会抑制移动构造和移动赋值的隐式生成,但不会影响拷贝构造和拷贝赋值的隐式生成逻辑。
内容的提问来源于stack exchange,提问作者tux Neoh
相关产品推荐
相关产品推荐

