二级C++语言程序设计中,如何使用类对象数组?

发布于 2018-01-30 16:20  编辑:盘子
0
计算机等级考试题库 扫码微信刷题

问:二级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这三个对象离开作用域时调用的。






考无忧小编推荐:

更多计算机等级考试真题及答案>>>点击查看

想知道更多关于计算机等级报考指南、考试时间和考试信息的最新资讯在这里>>>点击查看


本文网址:http://www.k51.com.cn/info/jsjdjks/1801/3025381.html
选择分享到: