当我们定义一个类时,有时会希望禁止某些特定的操作,而编译器将这些操作声明为删除的。在C++11中,我们可以使用“=delete”关键字将类方法、构造函数或析构函数声明为删除的。以下是一个简单的示例:
#include
class MyClass {
public:
MyClass() = default; // 默认构造函数
MyClass(const MyClass&) = delete; // 拷贝构造函数被禁止
};
int main() {
MyClass a;
MyClass b(a); // 编译错误:使用了被删除的函数
return 0;
}
在上面的示例中,我们声明了一个“MyClass”类,并将默认构造函数声明为使用默认实现。但是,我们还将拷贝构造函数声明为被删除的,这意味着我们不能使用拷贝构造函数复制一个“MyClass”对象。当我们尝试复制对象“a”到对象“b”时,编译器将返回一个错误。
总之,声明一个类方法为删除的,可以防止一些不希望出现的操作。