Effective C++ 第一章 理解&总结

1.视C++为一个语言联邦

C++有四个次语言组,按照高效编程守则,应选择的参数传递方式

  • C. pass-by-value, Object-Oriented C ++.pass-by-reference-to-const(因为有用户自己定义的构造函数和析构函数)
  • Template C++.pass-by-reference-to-const(泛型编程甚至不知道所处理的对象的类型)
  • STL. pass-by-value(因为迭代器和函数对象都是在C指针之上塑造出来的)

2.尽量用const,enum,inline替换#define

  • 即以编译器替换预处理器。
  • 对于单纯的常量,用const和enum代替#define.
  • 对于形似函数的宏,使用inline函数替换#define.

3.尽可能使用const

const可以施加于:
对象
函数参数(如输入参数的const引用)
函数返回值
成员函数后加const,表明不改变成员变量。

注意修饰指针的时候,到底是指针是const,还是指针指向的data是const
如const char* p = ……data是const
char* const p = ……指针是const

4.确定对象被使用前先被初始化

  • 对于内置类型的对象,使用之前先手动初始化,因为c++不保证会初始化他们。其他的用构造函数初始化。
  • 构造函数里的赋值并不是初始化,应该用初始化参数列表 member initialization list进行初始化。参数列表的次序与class中声明的顺序相同,不是必须的,但是为了减少不必要的麻烦,就这么做就可以了。
  • 跨编译单元时,初始化次序让人迷惑,用reference-returning函数内的local static 对象替换non-local static对象。(p32)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值