Effective C++ 读书笔记(1-4条款)和理解

##1、视C++为一个语言联邦

C++是一门从C语言发展演化而来的语言,而且还在演化中,越来越智能和强大,相应地就增加了学习的成本和代价。C++具有多种编程范式:面向过程(C语言风格)、面向对象(核心特征)、函数式编程(不了解)、泛型(略了解、强大)和元编程(一点不了解)。所以这是一门奇葩而杂揉的语言,要啥有啥,所以没有一个人敢轻易地说自己精通C++。
标题说C++是一个联邦,那它有哪些邦呢?

  • C语言
  • 面向对象的C++
  • Template
  • STL

记住:每一部分的语言和编程风格都不一样。
第一条款的目的是要告诉我们C++的总体结构,让大家心里有谱。

##2、尽量以const、enum、inlin替换#define
学过C语言的我们都对#define很熟悉,它用来定义常量和宏很有用处的,但是转到了C++,作者想告诉我们#define能不用就不用,要设法取而代之,在代码中要尽量少看到#define。
###const替换#define

  1. const定义的变量可以进入符号表,方便调试
  2. const定义的常量可以限制作用域,也就是class里。

###enum替换#define
不太理解这么做的好处

###inline替换#define
用#define定义宏是看起来非常恶心的事情,理解起来很头疼,MFC里大量用到了宏,简直就是奇技淫巧。但如果用inline来实现,结合template可以让函数易懂太多。inline函数和宏有类似之处,都是用预定义好的代码替换掉函数功能调用的地方,但是替换时机不同,宏是在预编译阶段替换,而inline是编译时替换的。inline函数可以调试,可以节省时间和空间的,因为不需要进行栈的保存、返回等工作。
##条款2总结
这些手段能降低#define的使用,但是不能完全做到。

##3、尽可能使用const
太多细节待整理,暂时不写。。。。
##4、确定对象被使用前先已初始化

  1. 内置类型必须手动初始化,不然会有随机数
  2. 非内置类型在构造函数中确保初始化
  3. 成员初值列比赋值更高效
  4. C++中类的成员初始化是有严格的顺序的,以声明的顺序初始化
  5. 注意两个文件中定义的两个类的初始化顺序,可能会带来麻烦,但是用local static方法可以预防。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值