Effective C++(6)

条款16 Use the same form in corresponding uses of new and delete

成对使用的new和delete要使用相同形式

new对应delete,new[]对应delete[]。

同时注意尽量不要对数组形式使用typedef

条款17 Store newed objects in smart pointers in standalone statements

以独立语句将newed对象植入智能指针

如果不这么做,在new到delete的过程中可能会有异常被抛出,导致无法delete,内存泄漏。

条款18 Make interfaces easy to use correctly and hard to use incorrectly

让接口容易被正确使用,不易被误用

1.保持接口参数一致和行为一直

2.如果接口一定有操作,可以在外套一个新类型

3.可以给接口自定义删除器

条款19 Treat class design as type design

1.新type对象如何被创建和销毁——ctor函数,析构函数,内存分配函数和释放函数(注意operator new,operator delete, operator new[]和operator delete[])

2.对象初始化和对象赋值的区别——见条款四,copy构造函数和copy assignment操作符

3.新type对象如果passed by value意味着什么——copy构造函数用来定义一个type的pass-by-value改如何实现

4.什么是新type的合法值——成员函数(尤其是赋值和初始化一类)必须进行检查工作

5.有关这个新type的继承体系——继承自其他class,需要注意函数使virtual还是non-virtual;作为基类,哪些函数应该写为virtual(析构函数必须是virtual!)

6.新type需要什么转换——如果需要隐式转换,则需要写转换函数operator T2,如果只允许explicit构造函数,则需要写出专门转换的函数(条款15

7.什么样的操作符和函数是合理的——见条款23.24.46

8.什么标准函数应该驳回——条款6:不需要编译器自动生成函数需要自己书写并写为private

9.谁该取用新type的成员——决定哪些是public,哪些是private,哪些是protected,哪些是friend

10.什么是新type“未声明接口”——条款29

11.新type有多一般化?——究竟是新class还是新class template

12.真的需要一个新type吗?——如果只是定义心得derived class添加功能,说不定可以使用non-member函数或者template

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值