函数=delete

函数=delete 表明虽然声明了此函数但是不希望使用它,可以用在任何函数上面。

class oneClass
{
public:
    oneClass() = delete;//禁止创建默认构造函数
    oneClass(const oneClass &) = delete;//禁止拷贝
    oneClass & operator = (const oneClass &) = delete;//禁止赋值
};

如果析构函数 = delete,不能调用析构函数,这时候编译器不允许在栈内存创建对象,因为当对象生存期结束时无法调用析构函数释放对象,编译器不允许在栈内存创建不能释放的对象。这时候可以在堆内存创建对象,但不能释放对象。