2011年计算机等级考试二级C++辅导笔记:类对象数组和静态成员

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  一、类对象数组
  类的对象和C++其他数据类型一样,也可以为其建立数组,数组的表示方法和结构一样。
  #include iostream.h
  class Date
  {
  int mo,da,yr;
  public:
  Date(int m=0,int d=0, int y=0) { mo=m; da=d; yr=y;}
  void display() const { cout< };
  int main()
  {
  Date dates[2];
  Date today(12,31,2003);
  dates[0]=today;
  dates[0].display();
  dates[1].display();
  return 0;
  }
  1.类对象数组和默认构造函数
  在前面已经说过,不带参数或者所有参数都有默认值的构造函数叫做默认构造函数。如果类中没有构造函数,编译器会自动提供一个什么都不做的公共默认构造函数 。如果类当中至少有一个构造函数,编译器就不会提供默认构造函数。
  如果类当中不含默认构造函数,则无法实例化其对象数组。因为实例花类对象数组的格式不允许用初始化值来匹配某个构造函数的参数表。
  上面的程序中,main()函数声明了一个长度为2的Date对象数组,还有一个包含初始化值的单个Date对象。接着把这个初始化的Date对象赋值给数组中第一个对象,然后显示两个数组元素中包含的日期。从输出中可以看到,第一个日期是有效日期,而第二个显示的都是0。
  当声明了某个类的对象数组时,编译器会为每个元素都调用默认构造函数。
  下面的程序去掉了构造函数的默认参数值,并且增加了一个默认构造函数。
  #include
  class Date
  {
  int mo, da, yr;
  public:
  Date();
  Date(int m,int d,int y) { mo=m; da=d; yr=y;}
  void display() const { cout < };
  Date::Date()
  {
  cout < mo=0; da=0; yr=0;
  }
  int main()
  {
  Date dates[2];
  Date today(12,31,2003);
  dates[0]=today;
  dates[0].display();
  dates[1].display();
  return 0;
  }
  运行程序,输出为:
  Date constructor running
  Date constructor running
  12/31/2003
  0/0/0
  从输出中可以看出,Date()这个默认构造函数被调用了两次。
  2.类对象数组和析构函数
  当类对象离开作用域时,编译器会为每个对象数组元素调用析构函数。
  #include iostream.h
  class Date
  {
  int mo,da,yr;
  public:
  Date(int m=0,int d=0,int y=0) { mo=m; da=d; yr=y;}
  ~Date() {cout< void display() const {cout< };
  int main()
  {
  Date dates[2];
  Date today(12,31,2003);
  dates[0]=today;
  dates[0].display();
  dates[1].display();
  return 0;
  }
  运行程序,输出为:
  12/31/2003
  0/0/0
  Date destructor running
  Date destructor running
  Date destructor running
  表明析构函数被调用了三次,也就是dates[0],dates[1],today这三个对象离开作用域时调用的。

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答