8.6 默认的类成员

2013-10-07 16:09:15 · 作者: · 浏览: 69

8.6 默认的类成员

请记住,编译器能为类默认提供一切所需要的。假定定义了如下类:

  1. class MyClass  
  2. {  
  3. int data;  
  4. }; 

这个类只定义了一个数据成员,似乎可做的工作很少,但编译器提供了一些成员。如果没有指定,编译器将提供如下成员的定义:

默认的构造函数:

  1. MyClass(){} 

执行逐个成员复制操作的复制构造函数:

  1. MyClass(const MyClass& obj) {/* Copy members */} 

析构函数定义如下:

  1. ~MyClass(){} 

执行逐个成员复制操作的默认赋值操作符:

  1. MyClass& operator=(const MyClass& obj) {/* Copy members */} 

警告:Visual C++(www.cppentry.com)没有实现自动定义的移动构造函数和移动赋值操作符,这与C++(www.cppentry.com) 11语言标准不一致。

如果定义了构造函数,编译器就不提供默认构造函数。如果不希望其他的默认操作受影响,就必须在类中把它们定义为私有,这样就不能从类的外部访问到它们。