GeekBand极客班 第二周

关于The big three:

1. 析构函数

2.拷贝构造函数

3.operator= (拷贝赋值运算符)


根据《C++ prime》第五版 7.15『拷贝,赋值和析构』的描述

对象会在几种情况下会被拷贝:

1.初始化变量

2.以值的方式传递或返回一个对象

3.返回一个对象


一般来说,我们要避免拷贝一个比较大的类型,所以常常会返回引用,通过引用来访问该对象。


对象会在使用赋值操作符(=),发生对象赋值操作。


对象会在几种情况调用析构函数:

1.对象被销毁,其成员也被销毁

2.vector对象销毁时存储在其中的对象会被销毁

3.变量离开其作用域

4.临时对象,当创建它的完整表达式结束时被销毁



The big three 就算我们没有去定义,编译器也会自动帮我们定义。但是如果类要分配对象以外的资源,像是分配动态内存的时候,编译器有可能不能正常工作,所以我们设定带有指针的类时,要自己定义这三个行为。

一般来说,我们要同时定义这三个函数。最好先从确定是否要定义析构函数,因为析构函数比较容易看出来,当我们肯定需要析构函数的时候,也就确定了还要定义拷贝函数和拷贝赋值运算符。

推荐阅读更多精彩内容