大约 1 分钟
总而言之,C++11对于特殊成员函数处理的规则如下:
默认构造函数:和C++98规则相同,仅当类不存在用户声明的构造函数时才自动生成。
析构函数:基本上和C++98相同;稍微不同的是现在析构函数默认noexcept,和C++98一样,仅当基类析构为虚函数,派生类的析构函数才是虚的。
复制构造函数:和C++98运行时行为一样:按成员进行非静态数据成员的复制构造。仅当类中不包含用户声明的复制构造时才生成。如果该类声明了移动操作,则复制构造函数将被删除。当已经存在复制赋值运算符或析构函数时,仍然生成复制构造函数已经成为了被废弃的行为。
复制赋值运算符:和C++98运行时行为一样:按成员进行非静态数据成员的复制赋值。仅当类中不包含用户定义的复制赋值运算符时才生成。如果该类声明了移动操作,则复制赋值运算符将被删除。当已经存在复制构造或者析构函数,仍然生成复制赋值运算符已经成为了被废弃的行为。 移动构造函数和移动赋值运算符:都按成员进行非静态数据成员的移动才做。仅当类中不包含用户声明的复制操作、移动操作和析构函数时才生成。
Loading...