美文网首页
Boolan C++面向对象高级编程(上) 第二周笔记 暗影行者

Boolan C++面向对象高级编程(上) 第二周笔记 暗影行者

作者: hongXkeX | 来源:发表于2017-04-17 23:00 被阅读18次

    C++面向对象高级编程

    第二周结构框图:

    7.三大函数:拷贝构造,拷贝赋值和析构函数
    8.堆,栈与内存管理
    9.复习String的实现过程
    10.扩展补充:类模板,函数模板及其他
    

    7.三大函数:拷贝构造,拷贝赋值和析构函数:

    String class:

    默认编译器会给出一套拷贝构造和拷贝赋值定义(这份特别标准),但带指针的class编译器给的不够用,需自己定义,所以,只要class中带指针,不能用编译器默认给的,依下图讲解拷贝构造和拷贝赋值:
    
    string-test.cpp

    下面讲解Big Three:

    (笔记注释都下在图里面了)
    
    笔记注释都下在图里面了

    构造函数与析构函数:

    这里写图片描述
    程序结束之前必须释放动态分配到的堆内存(写到析构函数中)
    

    堆栈内存讲解点我

    这里写图片描述

    拷贝构造函数:

    这里写图片描述

    拷贝赋值函数:

    (笔记在图上)


    这里写图片描述
    注意要写检测自我赋值语句,如果不写可能会导致下图:
    
    这里写图片描述
    如果没写检测自我赋值语句,可能会出错!
    侯捷老师总结:写检测自我赋值语句不止为了效率高,而且是为了防止出错!
    

    8.堆,栈与内存管理:

    output函数:

    这里写图片描述
    cout这种东西本来就可以接收字符串的地址以打印出字符串
    

    所谓堆栈:

    这里写图片描述

    堆对象的生命期

    这里写图片描述
     注意:new先分配memory,再调用ctor
          delete:先调用dtor,在释放memory
    

    动态分配所得的内存块,in VC:

    这里写图片描述
       调试模式下,多出来的内存是一种必要的浪费,因为以后回收时需要靠某些东西顺利回收。
       上下cookie最重要的作用是记录整块给你的大小(以便回收时让编译器知道要回收的大小)
    

    array new一定要搭配array delete

    这里写图片描述
    要使用array delete否则会出现内存泄漏
    

    10.扩展补充:类模板,函数模板及其他

    进一步补充:static

    这里写图片描述
     1.调用相同的函数,传给他们不同的地址,这样才有机会去处理不同的数据。
     2.静态函数没有this pointer
     3.静态函数只能处理静态数据。
     4.class中的静态数据一定要在class外面写上定义!!!
     5.调用static函数的方式有二:
       a.通过object调用
       b.通过class name调用
    

    class templete 类模板:

    类模板会造成代码必要的膨胀
    

    革命尚未成功,同志仍需努力!

    相关文章

      网友评论

          本文标题:Boolan C++面向对象高级编程(上) 第二周笔记 暗影行者

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