8.6 默认的类成员
请记住,编译器能为类默认提供一切所需要的。假定定义了如下类:
- class MyClass
- {
- int data;
- };
这个类只定义了一个数据成员,似乎可做的工作很少,但编译器提供了一些成员。如果没有指定,编译器将提供如下成员的定义:
默认的构造函数:
- MyClass(){}
执行逐个成员复制操作的复制构造函数:
- MyClass(const MyClass& obj) {/* Copy members */}
析构函数定义如下:
- ~MyClass(){}
执行逐个成员复制操作的默认赋值操作符:
- MyClass& operator=(const MyClass& obj) {/* Copy members */}
警告:Visual C++(www.cppentry.com)没有实现自动定义的移动构造函数和移动赋值操作符,这与C++(www.cppentry.com) 11语言标准不一致。
如果定义了构造函数,编译器就不提供默认构造函数。如果不希望其他的默认操作受影响,就必须在类中把它们定义为私有,这样就不能从类的外部访问到它们。