类设计者的核查表

1.你的类需要构造函数吗
2.你的数据成员是私有的吗
3.你的类需要一个无参的构造函数吗
  如果没有无参的构造函数则下面的定义是错误的:
  Point p;   //错误:没有初始化
  Point pa[100] //错误
4.是不是每个构造函数初始化所有的数据成员?
  构造函数的用途就是用一种明确的状态来设置对象。
  对象的状态由对象的数据成员进行反映。因此,每个
  构造函数都要负责为所有的数据成员设置经过明确定义
  的值,如果构造函数没有做到这一点,就很可能导致错误。
5.类需要析构函数吗?
  不是所有有构造函数的类都需要析构函数。例如,
   表示复数的类及时有构造函数也可能不需要析构函数
   。如果深入考虑一个类要做些什么,那么该类是否
   需要析构函数的问题就十分明显了。应该问问该类
   是否分配了资源,而这些资源又不会由成员函数自动释放,
   这就足够了。
6.类需要一个虚析构函数吗?
  有些累需要虚析构函数只是为了声明它们的析构函数是虚的。
  当然,决不会用作基类的类是不需要虚析构函数的:任何虚
  函数只在继承的情况下才有用。只有在多态的情况下才需要使用
  虚析构函数。
7.你的类需要复制构造函数吗?
  关键在于复制该类的对象是否就相当于复制其数据成员和基类对象。
  如果并不相当,就需要复制构造函数。如果你的类在构造函数中分配资源,
  则可能需要一个显示的复制构造函数来管理资源。有析构函数(除了空的
  虚析构函数外)的类通常是用析构函数来释放构造函数分配的资源,
  这通常也说明需要一个复制构造函数。
8.你的类需要一个赋值操作符吗?
9.你的复制操作符能正确地将对象赋给对象本身吗?
  赋值总是用新值取代目标对象的旧值。如果原对象和目标对象是
  同一个,而我们又奉行“先释放旧值,再复制”的行事规程,那么就可能在还
 没有实施复制之前就把原对象销毁了。例如:
  class string{
  public:
        string& operator=(const string& s);
  private:
        char* data;
};
 我们很容易就用下面的方法来实现赋值:
string& string::operator=(const string& s)
{
 if(&s !=this){
  delete [] data;
  data=new char[strlen(s.data)+1];
  strcpy(data,s.data);
}
  return *this;
}
}
10.你的类需要定义关系操作符吗?
11.删除数组时你记住用delete[]吗?
12.记得在复制构造函数和复制操作符的参数类型中加上const了吗?
13.如果函数有引用参数,它们应该是const引用吗?
14.记得适当地声明成员函数为const的了吗?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值