根据 C++11 标准,以下内容是否合法(= default
在类的定义之外)?
// In header file
class Test
{
public:
Test();
~Test();
};
// In cpp file
Test::Test() = default;
Test::~Test() = default;
是的,特殊成员函数可以在 .cpp 文件中默认定义。请注意,通过这样做,内联默认函数的某些属性将不适用于您的类。例如,如果您的复制构造函数是默认定义的外线,则您的类将不会被视为普通可复制(这也使其无法被识别为 POD)。同样,默认定义的外线析构函数将使您的类型失去平凡(或 POD)的资格。
如果您希望有一个非内联复制构造函数并控制它的定义位置(也许是为了控制它需要的生成的模板定义),但不希望自己手动定义它,这可能很有用-精心设计的成员初始化列表,这将是费力的,并且可能会在维护过程中变得陈旧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)