Effective C++ 3nd 读书摘要(Third Edition 55 Specific Ways to Improve Your Programs and Design)

一、让自己习惯C++

 

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

 

C++由以下部分组成:C、Object-Oriented C++、Template C++、STL

 

Item2. 尽量以const、enum、inline代替#define

 

Item3. 尽可能使用const

 

1.一共有这样几种const用法:

另外,以下两种形式是一样的:

void f1(const Widget *pw);         // f1 takes a pointer to a
                                                   // constant Widget object
void f2(Widget const *pw);         // so does f2

迭代器也有const:

const std::vector<int>::iterator iter =     // iter acts like a T* const
std::vector<int>::const_iterator cIter =   //cIter acts like a const T*

 

2. 让non-const函数调用const函数以避免重复:

const函数可以使得返回的const指针、const引用等等均可以调用一些方法(const对象只能调用const函数)

 

Item4. 确保对象在使用前已经先被初始化

重要的是不能混淆赋值(assignment)与初始化(initialization),通常后者的效率更高,初始化通过成员初值列表。

最好以申明次序作为成员列表中的次序。

 

Singleton模式的一个应用:定义于不同编译单元的non-local static对象的初始化次序

即以local static对象代替non-local static对象

 

二、构造、析构、赋值运算

Item5. 了解C++默默编写并调用了哪些函数

这些是C++会默认生成的(如果你没有定义):copy构造、copy assignment、析构(non-virtual)、default构造,所有这些都是public而inline的。

(注:上面的析构(non-virtual),除非其base class是虚析构)

 

Item6. 若不想使用编译器自动生成的函数,就该明确拒绝

TODO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值