在第二周的课程中,我们学习到了C++含有指针的类的写法,以及对C++程序涉及比原来熟悉了很多。
在这周开始学到了拷贝构造、拷贝赋值、析构这三大函数,在我购买的C++书籍中,刚讲到析构的时候也只是一笔带过(我看到的部分),也不是很清楚析构的作用,而侯老师讲的非常清楚,这三大函数出现的时机大部分是在类成员中含有指针的情况。
一下是我对本周课程的整理和思考
看书的时候我对拷贝构造一头雾水,直接把指针赋值不就可以了吗?学习之后知道了,浅拷贝容易引发内存泄漏,且两个指针指向同一内存是件危险的事,故拷贝构造的时候应该采用的是深拷贝。其中,直接取另一个object的private data是允许的(兄弟之间互为friend );
拷贝赋值的操作思路我简记为了,我把我的东西送给你,所以我没了这东西(delete内存),你有了一新东西(new一块新位置),而且是我送你的东西(赋值操作)。虽然有点不顺口,不过学习嘛,不择手段~
析构方面就稍微简单一些,起到的作用无非就是释放内存。
第二讲之中,认识到了STACK和HEAP,也就清楚了。前者是存在于某作用域内的一块内存空间,HEAP是由操作系统提供的一块global空间,程序可动态分配。
关于staic object,其生命在作用域结束之后仍然存在,知道整个程序结束,而栈里的变量,结束后自动调用其析构函数。
关于new的机制,先分配memory,再调用构造函数,delete与之相反。
最后一节 ,侯老师用底层的内存分布的图片为我们清楚地解释了内存底层的分布,以及为何new数组之后要用delete[]的形式以及会发生的后果,内存泄漏,也并不是我们想着的内存泄漏。
感觉课程已经越来越有深度,课后不多去翻书写代码依旧掌握不了,本来基础不太好,那就不多说了,我去写代码了~
(GeekBand)C++之路2
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Week2 Notes A.三大函数:拷贝构造,拷贝赋值,析构 string class这个不是标准库里的stri...