81、 default 和 delete

我们知道编译器会为类⾃动⽣成⼀些⽅法,⽐如构造和析构函数(完整的列表⻅ Effective C++: Item 5)。

现在我们可以显式地指定和禁⽌这些⾃动⾏为了。

struct classA {
classA() = defauult; // 声明⼀个⾃动⽣成的函数
classA(T value); 
void *operator new(size_t) = delete; // 禁⽌⽣成new运算符
};

在上述 classA 中定义了 classA(T value) 构造函数,因此编译器不会默认⽣成⼀个⽆参数的构造函数了, 如果我们需要可以⼿动声明,或者直接 = default 。

Last updated