条款19:设计class犹如设计type
2016-12-20 02:52
197 查看
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
这会影响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
相关文章推荐
- <<Effective c++>>读书笔记---条款19:设计class犹如设计type
- 读书笔记《Effective C++》条款19:设计class犹如设计type
- 条款19:设计class犹如设计type
- 条款19 设计class 犹如设计type
- Effective C++ -----条款19:设计class犹如设计type
- 条款19:设计class犹如设计type
- 条款19:设计class犹如设计type
- Effective C++——》条款19:设计class犹如设计type
- 条款19 设计class 犹如设计type
- Effective c++条款19:设计class犹如设计type
- 条款19:设计class犹如设计type
- 《Effective C++》学习笔记条款19 设计class犹如设计type
- 条款19:设计class犹如设计type
- 条款19 :设计class犹如设计type
- 《Effect C++》学习------条款19:设计class犹如设计type
- Effective C++ 条款19 设计class犹如设计type
- effective C++ 条款 19:设计class犹如设计type
- 条款19:设计class犹如设计type
- 条款19:设计class犹如设计TYPE(Treat class design as type design)
- 读书笔记《Effective c++》 条款19 设计class犹如设计type