Effective C++ chapter1:Accustiming Yourself to C++
Item 1:View C++ as a federation of languages
- 单词:
- sublanguage:子语言
- Exception:异常
- template:模板
- procedual:过程
- object-oriented:面向对象
- generic:泛型
- blocks:区块{ }
- statement:语句
- overloading:重载
- paradigm:泛型,模板
- convention:规定
- encapsulation:封装
- inheritance:封装
- polymorphism:多态
- virtual:虚
- container:容器
- iterators:迭代器
- algorithm:算法
- 摘要:
- C++可以视为由相关语言组成的联邦而非单一语言,可以以下次语言组成
- C:语句块,语句,内置类型,指针等等
- Oriented_Objected C++:类,封装,继承,多态,虚函数
- Template C++:泛型编程
- STL:STL是template程序库,容器,迭代器,算法
- C++可以视为由相关语言组成的联邦而非单一语言,可以以下次语言组成
Item2:Prefers consts,enums,and inlines to #define
- 单词:
- macro 宏
- object code 目标码
- scope 作用域
- encapsulated 封装
- 摘要:
- 对于常量,尽量用const而不是宏
- 当出现错误提示时,错误不会显示宏的名字而是代表的常量,不容易发现问题
- 宏可能会造成编译器对常量的多份拷贝
- 相比const没有作用域,也缺少封装
- 对于函数,尽量用内敛函数而不是宏
- 宏可能会引起歧义
- 对于常量,尽量用const而不是宏
Item3:Use const whenever possible
- 单词
- constraint 约束
- asterisk 星号
- iterator 迭代器
- modeled 仿照
- invoke 调用
- violation 违反
- client 用户
- duplication 复制
- cast转型
- 摘要
- 声明const可以帮助编辑器检测出错误用法
- return 对象by value 意思数据的一份copy
- 备注
- bitwise constness和const和non_const之间的调用看的我有点迷呀!
Item4:Make sure that objects are initialized before they're used.
- 单词
- manually 手动
- member initialization list 成员初始化列表
- directory 目录
- exclude 排除
- 摘要
- 在声明变量x时,有些语境会初始化为0,有的语境不会初始化,所以需要手动初始化
- 在调用构造函数时,使用初始化列表比赋值要效率高,赋值可以看成两个操作,第一步调用构造函数,第二步进行赋值,如果使用初始化列表,则会把第二步省去。
- 注意初始化的顺序,non_local static对象的初始化相对次序无明确定义
- 备注
- 需要注意的是变量声明时要初始化,特别是指针
- 构造函数里,初始化列表要初始化所有的属性。