默认的构造函数/类的析构函数之外?(Default constructor/destructor o

2019-08-06 07:25发布

根据(该C ++ 11标准以下法律= default的类的定义之外)?

// In header file
class Test
{
    public:
        Test();
        ~Test();
};

// In cpp file
Test::Test() = default;
Test::~Test() = default;

Answer 1:

是的,一个特殊的成员函数可以默认定义在.cpp文件外的线。 要知道,这样做,一些直列违约函数的性质将不适用于你的类。 例如,如果你的拷贝构造函数是默认定义出的线,你的类将不被视为平凡可复制(也不够格它被认为是一个POD)。 类似地,一个默认的定义外的线析构函数将资格从琐碎(或POD)的类型。

如果你想有一个非内嵌拷贝构造函数和控制它的定义(或者接管生成的模板定义控制它需要),但不希望自己手动用一只手将其定义这可能是有用-crafted成员初始化列表,这将是费力的,并可能正在维修去陈旧。



文章来源: Default constructor/destructor outside the class?