Effective C++读书笔记之设计class犹如设计type

       C++就像其它的OOP语言一样当你定义一个新class,也就定义了一个新的type。身为C++程序员,你的许多时间主要用来扩张你的类型系统(type system)。因此你应该带着和“语言设计者当初设计语言内置类型时”一样的谨慎来研讨class的设计
     如何设计高效的classes呢?首先你必须了解你面对的问题。几乎每一个class都要求你面对以下的提问,而你的回答往往导致你的设计规范。
 1) 新的type对象应该如何被创建和销毁、这会影响你的class的构造函数和析构函数以及内存分配函数和释放函数。
 2) 对象的初始化和对象的赋值该有什么样的差别。它决定你的构造函数和赋值操作符有的行为。 
 3) 新type的对象如果被passed by value(以值传递),意味着什么。copy构造函数用来定义一个type的pass-by-value该如何实现
 4) 什么是新type的合法值。对class的成员变量而言,通常只有某些数值集是有效的。它决定了你的class必须维护的约束条件。
 5) 你的新type需要配合某个继承图系(inheritance graph)。在继承某些既有的classes时,你就受到这些classes的设计和束缚,尤其要注意的是函数的virtual性。
 6) 你的新type需要什么样的转换。如果你要它有相应的类型转换就必须在类中提供相应的函数
 7) 什么样的操作符和函数对此新type而言是有合理的。它决定了你将为你的class声明哪些函数
 8) 什么样的标准函数应该驳回。这正是你需要声明为private者
 9) 谁该取用新type的成员。它决定了哪个成员为public,哪个为protected,哪个为private。
 10) 什么是新type的“未声明接口”(undeclared interface)。
 11) 你的新type有多少一般化。它决定了你是该声明一个class,还是声明一个class template。
 12) 你真的需要一个新的type吗。这决定了你该继承一个类,还是对这个class声明一些函数,就可以达到功能。
 总结:
 class的设计是type的设计,在定义一个新type之前,请确定你已经考虑过上面提到的所有讨论主题 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值