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

Posted 积少成多

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了条款19:设计class犹如设计type相关的知识,希望对你有一定的参考价值。

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

这会影响class的构造函数ctor和析构函数dtor,以及内存分配函数和释放函数

    //operator new

  //operator new[]

  //operator delete

  //operator delete[]

2,对象的初始化和对象的赋值该有什么什么区别?

  初始化在于构造函数ctor

  对象的赋值在于assigment操作符//operator =

3,新type的对象如果被passed by value意味着什么?

  意味着产生一个copy构造过程,//operator ()

4,什么是新type的合法值?

  通常只有某些函数值集是有效的。那么你的class必须维护的约束条件,也就是决定了你的成员函数(特别是ctor和复制构造函数,setter函数)需要进行错误检查。

5,新type是否需要配合某个继承图系?

  就是是否声明某个函数是否是virtual?尤其是dtor是否是virtual的?

6,新type需要什么样的转换?

  如果你允许T1被隐式转换为T2,就需要在T1内写一个类型转换函数//operator T2,

  或者class T2内写一个non-explicit-one-argument(可被单一实参调用)的构造函数。

 

  如果需要显示转换,需要写出专门的转换函数,且不能是上面2种隐式方法中的任何一种;

 

7,什么样的标准函数应该被禁止?

  声明为private

8,是否提供一般化?

  template

以上是关于条款19:设计class犹如设计type的主要内容,如果未能解决你的问题,请参考以下文章

Effective C++ 笔记:4设计与声明

更好的设计选择:方法返回 Object 或传递 'Class<T> type' 作为参数?

设计不受欢迎的服务条款

直播预告|股权架构设计税筹安排及股权投融资常用条款解析

实质合并破产全解:留债清偿架构设计关注要点与关键条款

实质合并破产法律观察:留债清偿的架构设计关注要点与关键条款