条款 19 :设计class犹如设计type

条款19:设计class犹如设计type

Treat class design as type design

设计一个新的class就像设计了一个新的类型,设计一个优秀的class必须考虑下列问题:

  • 新的对象应该如何被创建和销毁? 这影响到类的构造函数,析构函数以及内存的分配函数和释放函数。
  • 对象的初始化和对象的赋值该有什么样的差别? 这决定了构造函数和赋值操作符的行为,以及他们的差异。
  • 新的type如果被pass by value(值传递),意味着什么? 这会影响到复制构造函数的实现。
  • 什么是新type的“合法值”? 决定了成员函数必须作哪些检查工作,和异常处理
  • 你的新type需要配合某个继承图系吗? 主要影响关于虚函数的讨论
  • 你的新type需要什么样的转换? 是否需要自己编写转换函数且注意显式转换和隐式转换的区别
  • 什么样的操作符和函数对此新type而言是合理的? 关系到你成员函数的设计和操作符重载
  • 什么样的标准函数应该被驳回?条款6
  • 什么是新的type未声明的接口?
  • 你的新type有多么一般化?
  • 你真的需要定义一个新type吗? 有时候添加一个友元函数或成员函数便能解决的问题就不需要再设计一个新type

以上问题不容易回答,但作为一个优秀类的设计者,必须尽力去思考这些问题。

请记住

Class的设计就是type的设计。在定义一个新type之前,请你确定已经考虑过本条款覆盖所有讨论主题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值