美文网首页
GeekBand极客班 第二周

GeekBand极客班 第二周

作者: Adam来西 | 来源:发表于2016-05-23 09:21 被阅读0次

    关于The big three:

    1. 析构函数

    2.拷贝构造函数

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

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

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

    1.初始化变量

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

    3.返回一个对象

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

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

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

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

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

    3.变量离开其作用域

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

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

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

    相关文章

      网友评论

          本文标题:GeekBand极客班 第二周

          本文链接:https://www.haomeiwen.com/subject/esrarttx.html