<<Effective c++>>读书笔记---条款19:设计class犹如设计type

  想要设计出高效的classes首先你必须了解你面对的问题。几乎每一个class都要求你面对一下提问,而你的回答往往导致你的设计规范:

  • 新type的对象应该如何被创建和销毁?

   构造函数、析构函数应该怎么写

  • 对象的初始化和对象的赋值该有什么样的差别?

    对象的赋值要注意资源的拷贝,初始化直接调用构造函数,而赋值会调用拷贝构造函数或赋值操作符=

  • 新type的对象如果被passed by value(以值传递),意味着什么?

    调用了拷贝构造函数,注意深拷贝和浅拷贝

  • 什么是type的"合法值"?

  

  • 你的新type需要配合某个继承图系(inheritance graph)吗?

    多态,如果继承自现有的classes,你就受到那些classess的设计的束缚,特别是受到“它们的函数是virtual或non-virtual”的影响。如果其他类继承自你的class,那么你所声明的函数--尤其是析构函数--是否为virtual

  • 你的新type需要什么样的转换?

    显式和隐式类型转换

  • 声明样的操作符和函数对此type而言是合理的?

    这决定这我们需要声明那些函数

  • 什么样的标准函数应该驳回?

    那些正是你必须声明为private者

  • 谁该取用新type的成员?

    这个提问可以帮助你决定哪个成员为public,哪个为protected,哪个为private。它也帮助你决定哪一个classes和/或function应该是你的friends,以及将它们嵌套于另一个之内是否合理

  • 什么是新type的"未声明接口"(undecleared interface)?

  

  • 你的新type有多么一般化?

    是否要定义这个类,而是创建class template

 

posted @ 2015-03-05 21:36  恒月美剑  阅读(213)  评论(0编辑  收藏  举报