Delete 关键字新特性
在C ++ 11中,引入了关键字delete的新功能。我们可以将delete关键字应用于限制函数的使用。
下文将演示以下常见的使用场景:
- 应用于编译器自动生成的函数以禁止使用特定的操作(如复制,比较)
- 应用在成员函数上防止数据类型转换时导致数据丢失
- 应用在new运算符上来限制堆上对象的创建
- 应用在模板类上来限制创建特定的类实例
禁用复制构造函数和赋值运算符
我们可以将delete应用于编译器自动生成的函数,也可以用于其他函数。下面的User类中删除了复制构造函数和赋值运算符,如果有人尝试调用已删除的函数,则它将生成编译时错误。
class User{
int id;
string name;
public:
User(int userId, std::string userName) : id(userId), name(userName){
}
User(const User & obj) = delete; //禁用复