设为首页 加入收藏

TOP

2014年计算机二级C++复习资料:类对象数组和静态成员
2017-09-19 12:45:28 】 浏览:5330
Tags:2014年 计算机 二级 复习资料 对象 静态 成员

二级C++辅导笔记:类对象数组和静态成员


一、类对象数组
类的对象和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这三个对象离开作用域时调用的。


热点信息关注:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇2014年计算机二级C++复习资料:类.. 下一篇2014年计算机二级C++复习资料:析..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目