美文网首页
GeekBand:C++第二周课程总结

GeekBand:C++第二周课程总结

作者: 屋顶上的橡皮人 | 来源:发表于2016-05-22 21:56 被阅读12次

    第二周的课程是对第一周课程类设计的延伸。在第一周的课程中,讲了不带指针的一般类的设计,重点讲了操作符的重载,及构造函数的列表初始化等。而在第二周的课程中,对含有指针的类(class with pointer)类重点部分做了详细的说明,主要讲述了以下几个概念,而这些概念对今后类的设计(OOP)有很好的指导意义。

    拷贝构造

    如果一个构造函数的第一个参数是自身类类型的引用,且其他额外参数都有其默认值,则此构造函数为拷贝构造函数。

    Foo(const Foo&)
    

    拷贝构造函数通常不应该是explicit(这个内容涉及到类型转换)

    当类中的成员需要分配类外的资源时,通常的特征是在成员中含有指针变量,这个时候往往采用系统自带的合成拷贝构造函数不能达到要求。需要重新设计拷贝构造函数。顾名思义,拷贝构造就是在构造函数(ctor)中执行深拷贝工作。
      但正如<<C++ Primer>>中建议的那样,使用vector对象或者std命名空间下的string对象,能够避免分配和释放内存空间所带来的复杂性。也就是说,使用string或者vector来替代字符指针(char*)和数组,能够使用系统默认的拷贝构造函数而不需要重写。

    ** 拷贝构造函数被用来初始化非引用类类型参数**

    拷贝赋值

    这个概念实际上是对第一周学习的的操作符重载的延伸,即“=”号为赋值符,拷贝赋值实际上是对拷贝赋值运算符的重载。赋值运算符返回一个指向其左侧运算对象的引用.

    ** 如果一个运算符是一个成员函数,其左侧运算对象就绑定到隐式的this参数.其右侧运算对象作为显式参数传递.**

    析构函数

    析构函数执行与构造函数相反的操作。析构函数的主要作用是释放对象所使用的动态分配的资源,并销毁对象的非static数据成员。

    ** 需要析构函数的类也需要拷贝构造和拷贝赋值**
    也就是说,如果一个类需要析构函数,那么基本可以肯定的说,也需要拷贝构造和拷贝赋值。

    相关文章

      网友评论

          本文标题:GeekBand:C++第二周课程总结

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