根据(该C ++ 11标准以下法律= default
的类的定义之外)?
// In header file
class Test
{
public:
Test();
~Test();
};
// In cpp file
Test::Test() = default;
Test::~Test() = default;
根据(该C ++ 11标准以下法律= default
的类的定义之外)?
// In header file
class Test
{
public:
Test();
~Test();
};
// In cpp file
Test::Test() = default;
Test::~Test() = default;
是的,一个特殊的成员函数可以默认定义在.cpp文件外的线。 要知道,这样做,一些直列违约函数的性质将不适用于你的类。 例如,如果你的拷贝构造函数是默认定义出的线,你的类将不被视为平凡可复制(也不够格它被认为是一个POD)。 类似地,一个默认的定义外的线析构函数将资格从琐碎(或POD)的类型。
如果你想有一个非内嵌拷贝构造函数和控制它的定义(或者接管生成的模板定义控制它需要),但不希望自己手动用一只手将其定义这可能是有用-crafted成员初始化列表,这将是费力的,并可能正在维修去陈旧。