美文网首页
(GeekBand)C++之路2

(GeekBand)C++之路2

作者: 天雨流芳428 | 来源:发表于2016-03-14 09:23 被阅读0次

    在第二周的课程中,我们学习到了C++含有指针的类的写法,以及对C++程序涉及比原来熟悉了很多。
    在这周开始学到了拷贝构造、拷贝赋值、析构这三大函数,在我购买的C++书籍中,刚讲到析构的时候也只是一笔带过(我看到的部分),也不是很清楚析构的作用,而侯老师讲的非常清楚,这三大函数出现的时机大部分是在类成员中含有指针的情况。
    一下是我对本周课程的整理和思考
    看书的时候我对拷贝构造一头雾水,直接把指针赋值不就可以了吗?学习之后知道了,浅拷贝容易引发内存泄漏,且两个指针指向同一内存是件危险的事,故拷贝构造的时候应该采用的是深拷贝。其中,直接取另一个object的private data是允许的(兄弟之间互为friend );
    拷贝赋值的操作思路我简记为了,我把我的东西送给你,所以我没了这东西(delete内存),你有了一新东西(new一块新位置),而且是我送你的东西(赋值操作)。虽然有点不顺口,不过学习嘛,不择手段~
    析构方面就稍微简单一些,起到的作用无非就是释放内存。
    第二讲之中,认识到了STACK和HEAP,也就清楚了。前者是存在于某作用域内的一块内存空间,HEAP是由操作系统提供的一块global空间,程序可动态分配。
    关于staic object,其生命在作用域结束之后仍然存在,知道整个程序结束,而栈里的变量,结束后自动调用其析构函数。
    关于new的机制,先分配memory,再调用构造函数,delete与之相反。
    最后一节 ,侯老师用底层的内存分布的图片为我们清楚地解释了内存底层的分布,以及为何new数组之后要用delete[]的形式以及会发生的后果,内存泄漏,也并不是我们想着的内存泄漏。
    感觉课程已经越来越有深度,课后不多去翻书写代码依旧掌握不了,本来基础不太好,那就不多说了,我去写代码了~

    相关文章

      网友评论

          本文标题:(GeekBand)C++之路2

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