类设计者的核查表
2015-08-15 11:26
218 查看
1.你的类需要一个构造函数吗
需要构造函数来隐藏类的内部工作方式。
2.你的数据成员是私有的吗
通常使用公有的数据成员不是什么好事,因为类设计者无法控制何时访问这些成员。
3.你的类需要一个无参的构造函数吗
为了可生成对象数组或类的对象不必显示的初始化类的构造函数,必须显示地写一个无参的构造函数。
4.是不是每个构造函数初始化所有的数据成员
每个构造函数都要负责为所有的数据成员设置经过明确定义的值。
5.类需要析构函数吗
看该类是否分配了资源,而这些资源又不会由成员函数自动释放。
6.类需要一个虚析构函数吗
决不会用在基类的类是不需要虚析构函数的。
例如:
struct B
{
String s;
//virtual ~B() {}
};
struct D : B{
Stirng t;
};
int main()
{
B* bp=new D;
delete bp; //这里有问题,除非B有一个虚析构函数,否则将调用错误的析构函数
}
7.你的类需要复制构造函数吗
你的类在构造函数内分配资源,则可能需要一个显式的复制构造函数来管理资源。
8.你的类需要一个赋值操作符吗
如果需要复制构造函数,同理多半也会需要一个赋值操作符。
9.你的赋值操作符能正确地将对象赋给对象本身吗
注意。
10.你的类需要定义关系操作符吗
如果你的类逻辑上支持逻辑操作,可以定义关系操作符。
11.删除数组时,你记住用delete[]吗
C++系统不想占用现有C系统的malloc函数,因此必须利用原来的这个malloc直接实现new。
12.记得在复制构造函数和赋值操作符的参数类型中加上const了吗
需要
13.如果函数有引用参数,它们应该是const引用吗
只有单函数想改变参数是,它才应该有不用const声明的引用参数。
14.记得适当地声明成员函数为const的了吗
如果确信一个成员函数不用修改它的对象,就可以声明它为const。
转载自:http://blog.csdn.net/cq20110310/article/details/7251198
需要构造函数来隐藏类的内部工作方式。
2.你的数据成员是私有的吗
通常使用公有的数据成员不是什么好事,因为类设计者无法控制何时访问这些成员。
3.你的类需要一个无参的构造函数吗
为了可生成对象数组或类的对象不必显示的初始化类的构造函数,必须显示地写一个无参的构造函数。
4.是不是每个构造函数初始化所有的数据成员
每个构造函数都要负责为所有的数据成员设置经过明确定义的值。
5.类需要析构函数吗
看该类是否分配了资源,而这些资源又不会由成员函数自动释放。
6.类需要一个虚析构函数吗
决不会用在基类的类是不需要虚析构函数的。
例如:
struct B
{
String s;
//virtual ~B() {}
};
struct D : B{
Stirng t;
};
int main()
{
B* bp=new D;
delete bp; //这里有问题,除非B有一个虚析构函数,否则将调用错误的析构函数
}
7.你的类需要复制构造函数吗
你的类在构造函数内分配资源,则可能需要一个显式的复制构造函数来管理资源。
8.你的类需要一个赋值操作符吗
如果需要复制构造函数,同理多半也会需要一个赋值操作符。
9.你的赋值操作符能正确地将对象赋给对象本身吗
注意。
10.你的类需要定义关系操作符吗
如果你的类逻辑上支持逻辑操作,可以定义关系操作符。
11.删除数组时,你记住用delete[]吗
C++系统不想占用现有C系统的malloc函数,因此必须利用原来的这个malloc直接实现new。
12.记得在复制构造函数和赋值操作符的参数类型中加上const了吗
需要
13.如果函数有引用参数,它们应该是const引用吗
只有单函数想改变参数是,它才应该有不用const声明的引用参数。
14.记得适当地声明成员函数为const的了吗
如果确信一个成员函数不用修改它的对象,就可以声明它为const。
转载自:http://blog.csdn.net/cq20110310/article/details/7251198
相关文章推荐
- 黑马程序员----正则表达式
- 用友T6客户端 点击系统管理admin.exe,一直无响应
- 1-Introduction
- self = [super init]
- LeetCode Same Tree OJ 算法 刷题
- 面试题目集合 更新8/24
- 编写高质量代码改善C#程序的157个建议——建议33:避免在泛型类型中声明静态成员
- Spring+struts Timer计时器
- 用 GetEnvironmentVariable 获取常用系统环境变量
- POJ 2826 An Easy Problem!(简单数论)
- CSS3入门之边框与背景
- 工厂模式
- DfrgFat.exe应用程序错误 0X77C1741C指令不能“Read”
- tableview cell中包含cell或者不同的部分
- 数据库系统学习(九)-索引
- [LeetCode] House Robber II
- Javascript基础(7)DOM简介
- Oracle触发器
- 单片机显示原理(LCD1602)
- text段,data段,bss段,堆和栈