二级C++等级考试堆和类数组是怎么回事?

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

问:二级C++等级考试堆和类数组是怎么回事?


考无忧小编解答:前面提到,类对象数组的每个元素都要调用构造函数和析构函数。下面的例子给出了一个错误的释放类数组所占用的内存的例子。

#include iostream.h

class Date

{

int mo, da, yr;

public:

Date() { cout < ~Date() { cout< }

int main()

{

Date* dt = new Date[5];

cout < delete dt; //这儿

return 0;

}

指针dt指向一个有五个元素的数组。按照数组的定义,编译器会让new运算符调用Date类的构造函数五次。但是delete被调用时,并没有明确告诉编译器指针指向的Date对象有几个,所以编译时,只会调用析构函数一次。下面是程序输出;

Date constructor

Date constructor

Date constructor

Date constructor

Date constructor

Process the date

Date destructor

为了解决这个问题,C++允许告诉delete运算符,正在删除的那个指针时指向数组的,程序修改如下:

#include iostream.h

class Date

{

int mo, da, yr;

public:

Date() { cout < ~Date() { cout< }

int main()

{

Date* dt = new Date[5];

cout < delete [] dt; //这儿

return 0;

}

最终输出为:

Date constructor

Date constructor

Date constructor

Date constructor

Date constructor

Process the date

Date destructor

Date destructor

Date destructor

Date destructor

Date destructor





考无忧小编推荐:

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

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


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