Skip to content

Latest commit

 

History

History
24 lines (19 loc) · 1.35 KB

File metadata and controls

24 lines (19 loc) · 1.35 KB

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

设计优秀的class是一项艰巨的工作,因为设计好的type是一项艰巨的工作。好的type有自然的语法,直观的语义,以及一或多个高效实现品。在C++中,一个不良规划下的class定义恐怕无法到达上述任何一个目标。甚至class的成员函数的效率都可能感受到它们如何被声明的影响。

那么,如何设计高效的class呢?首先你必须了解你面对的问题。几乎每一个class都要求你面对以下提问,而你的会的往往导致你的设计规范:

  • 新type对象应该如何被创建和销毁?
  • 对象的初始化和对象的赋值该有什么样的差别?
  • 新type对象如果被pass by value,意味着什么?
  • 什么是新type的合法值?
  • 你的新type需要配合某个继承体系吗?
  • 你的新type需要什么样的转换?
  • 什么样的操作符和函数对此新type而言是合理的?
  • 什么样的标准函数应该驳回?
  • 谁该取用新type成员?
  • 什么是新type的未声明接口?
  • 你的新type有多么一般化?
  • 你真的需要应该新type吗?

这些问题不容易回答,所以定义出高效的class是一种挑战。

请记住

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