Effective C++

1.尽量以const,enum,inline替换#define:编译器取代预编译器,错误追溯。

2.为多态基类声明virtual析构函数:通过基类指针可以析构继承类对象。

3.别让异常逃离析构函数:C++的异常实现机制一般都是不允许多重异常的,如果析构函数吐出异常,那么会出现资源泄露等不确定性行为或程序中止。异常发生时往往要回退并析构对象,那么从这点看析构函数也是不允许抛出异常的(不允许嵌套异常)。

4.绝不在构造析构函数中调用virtual函数:考虑访问未初始化对象这些安全性问题,这里面的virtual函数被当做non-virtual处理。所以调用virtual函数违背了使用virtual的初衷。

5.以对象管理资源:利用C++的析构函数自动调用机制来自动释放资源。

6.确定你的public继承塑模出is-a关系:这种关系可能和现实中不尽相同,如矩形和正方形的is-a关系,并不是所有作用于矩形的操作都可以作用于正方形;企鹅与鸟的关系,关键理清楚有些鸟也是不会飞的。

7.绝不重新定义继承而来的non-virtual函数:这违背了继承的初衷。如果需要多态的实现就干脆写成虚函数,或用复合。

8.通过复合塑模出has-a或“根据某物实现出”:复合和public继承的关系完全不同,如可以通过list实现出set(复合,即set包含list成员),不应通过set:public list来实现set,因为list可以插入重复元素,而set则不行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值