目录
1、default关键字
default 关键字的作用:强制生成某个默认函数。
应用场景:手动实现某个默认函数以后,使用default关键字自动生成默认构造函数
案例:当我们手动实现了某个构造函数时,编译器就不会自动生成构造函数了。如果我们觉得再去写一遍默认构造太麻烦,我们可以使用default 关键字强制生成一个默认构造函数。
class Person{
public:
Person() = default; // 强制生成默认构造函数
Persson(int age):_age(age){}
private:
int _age;
}
2、delete 关键字
delete 关键字的作用:禁止生成某个默认函数
应用场景:单例模式、禁止对象拷贝、禁止对象赋值
单例模式下,为了保证对象的唯一性,我们需要避免对象被拷贝或者赋值,即禁止编译器生成拷贝构造,当前场景下我们可以使用delete关键字。
class Person {
private:
Person(Person& p) = delete;
// Person& operator=(Person& p) {
// Person tmp(p); // 调用拷贝构造失败
// ...
// }
};
注意:delete关键字不光是禁止了类外的拷贝构造,同时也禁止了类内的拷贝构造。