前言:
其实当我写学习心得的时候,我已经把这本书都看完了,不过因为寒假忙着刷题,没有心思回头来总结。只能把这一部分的收尾工作现在来做了。不过这样做同样也有好处,在写东西的时候可以再复习一次,加深印象。
我的github:
寒假刷了150题的leetcode,现在也放在了我的github里,不仅仅有每一题的解题代码,还记录了我解题的时候的思路,以及遇上的问题。是一个很好的总结,欢迎大家前去参观。
https://github.com/YinWenAtBIT
一、导读:
1.1知识点摘要:
1. 声明式:告诉编译器摸个东西的名称和类型,但是忽略细节。外部对象声明,函数声明,类声明都是
2. 定义式:给编译器提供一些声明式所遗漏的细节,对对象而言,定义式是编译器为此对象拨发内存的地点。
3. 初始化:是给对象初值的过程。
4. 被声明为explicit的构造函数通常比implicit的构造函数更好,因为可以避免非预期的类型转换。
4. 虽然使用=号,但是如果有对象被新建立,那么调用的一定是拷贝构造函数。
二、条款:
01:视C++为一个语言联邦:C++使用的时候可以分成四块:C,C with Class,templateC++, STL。这四个部分通常会在使用C++的时候出现明显的界限。通常我写的代码是C with Class 和 STL模块中。
02:尽量以const, enum, inline 替换#define:
const, enum替换常量, inline替换掉宏定义函数
另外使用#define的常量,会在预处理的时候被替换,没有进入符号表,在遇上问题的时候不好调试。
03:尽可能使用const:
const出现在*号左边,代表被指物是常量,出现在*号右边,代表指针是常量,可以按照从右往左的顺序结合解析const。
当const和 non-const成员函数有着实质的等价实现时,领non-const版本调用const版本。
04:确定对象被使用前已经先被初始化:
永远在使用对象之前将它初始化。
在构造函数中,使用成员初值列效率比赋值高。
C++有固定的成员初始化顺序,base类比derived类更早初始化
三、总结:
第二遍看的时候,确实有了更多的收获,比如singleton模式,最开始的时候不明白是什么,现在完全理解了。更多的是忘记了这些条款,再次回忆。这样的复习效果应该听不凑。