码迷,mamicode.com
首页 > 编程语言 > 详细

条款5:了解C++提供的默认函数

时间:2015-05-25 08:33:11      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

当我们定义一个类时,如何没有声明任何函数,那么C++编译器会默认提供4个函数:默认构造函数、复制构造函数、赋值操作符函数、析构函数,并且这些函数默认都是public且inline的。因此,当你定义如下类:

 1 class Empty
 2 {
 3     
 4 };
 5 
 6 // 等价于定义如下类:
 7 class Empty
 8 {
 9 public:
10     Empty(){ }                              // default构造函数
11     Empty(const Empty& rhs){ }              // copy构造函数
12     ~Empty(){ }                             // 析构函数
13     Empty& operator=(const Empty& rhs){ }   // copy assignment操作符
14 };

只有当这些函数需要被调用时,编译器才会创建它们,如下为例子:

Empty e1;                // 调用默认构造函数,结束后调用析构函数

Empty e2(e1);            // 调用复制构造函数

e2 = e1;                 // 调用复制赋值操作符

 

区分复制构造函数和赋值操作符函数:

复制构造函数:用一个已有的对象去初始化一个正在创建的对象。

赋值操作符函数:用一个已有的对象赋值给另一个已存在的对象。

 

注意:

如果一个类中含有reference或者const成员,则编译器不会提供默认的copy assignment函数。

如果base类中的copy assignment函数被定义为private,则编译器不会为其derived类提供默认的copy assignment函数。

 

条款5:了解C++提供的默认函数

标签:

原文地址:http://www.cnblogs.com/benxintuzi/p/4527016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!