C++11中,当类中含有不能默认初始化的成员变量时,可以禁止默认构造函数的生成,
myClass() = delete;//表示删除默认构造函数 myClass() = default;//表示默认存在构造函数
当类中含有不能默认拷贝成员变量时,可以禁止默认构造函数的生成,
myClass(const myClass&) = delete;//表示删除默认拷贝构造函数,即不能进行默认拷贝 myClass & operator=(const myClass&) = delete;//表示删除赋值操作符,即不能进行赋值操作
class CTest { public: CTest() = default; //语句1 CTest(int x) { printf("this is CTest(int) create x "); } ~CTest() { printf("this is ~CTest destory "); } CTest& operator= (const CTest&) = delete; //语句2 }; int main() { CTest* ptr = new CTest; //此处如果没有语句1,则编译失败; CTest p1(1); CTest p2(2); p2 = p1; //此处编译失败,因为有语句二存在,已经将赋值操作符设置为已删除函数 return 0; }