首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的工程test27_3。此工程包含一个test27_3.cpp,其中定义了类ARRAY,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)完成类ARRAY的带一个参数的构造函数,参数i为int型,如果i不是正
使用VC6打开考生文件夹下的工程test27_3。此工程包含一个test27_3.cpp,其中定义了类ARRAY,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)完成类ARRAY的带一个参数的构造函数,参数i为int型,如果i不是正
admin
2010-02-08
50
问题
使用VC6打开考生文件夹下的工程test27_3。此工程包含一个test27_3.cpp,其中定义了类ARRAY,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)完成类ARRAY的带一个参数的构造函数,参数i为int型,如果i不是正数则输出错误信息并退出,否则申请int型的大小为i的空间,然后把i赋值给类的数据成员num。请在注释“//**1**”之后添加适当的语句。
(2)完成类ARRAY的拷贝初始化构造函数,注意解决重复删除的问题,请在注释“//**2**”之后添加适当的语句。
(3)完成类ARRAY的重载的运算符函数[],参数i为int型,如果i超界则输出错误信息并退出,否则把下标为i的元素返回,请在注释“//**3**”之后添加适当的语句。
(4)完成类ARRAY的重载的运算符函数二,同样需要注意解决重复删除的问题,不能只是简单的赋值,请在注释“//** 4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test27_3.cpp清单如下;
#include<iostream.h>
#include<stdlib.h>
class ARRAY
{
private:
int* p, num;
public:
ARRAY ( ) {p=new int[ 10 ] , num=10; }
ARRAY ( int i)
{
// ** 1 **
{
cout<<“错误!数组长度应为正。\n”;
exit(0);
}
p=new int
;
num= i;
}
ARRAY(const ARRAY & a);
int &operator [ ] (int i);
~ARRAY() {delete p; }
ARRAY&operator=(const ARRAY& a);
friend ARRAY operator+(ARRAY &a,ARRAY&b);
friend ostream& operator<< (ostream&os,ARRAY&a);
};
ARRAY: :ARRAY(const ARRAY &a)
{
// ** 2 **
for (int i=0; i<num; i++)
p
=a.p
;
}
int &ARRAY: :operator [ ] (int i)
{
// ** 3 **
{
cout<<“越界访问!”;
exit (0);
}
return p
;
}
ARRAY & ARRAY::operator=(const ARRAY& a)
{
num= a. num;
p=new int [num];
for (int i=0; i<num; i++)
p
=a.p
;
// ** 4 **
}
ARRAY operator+(ARRAY & a,ARRAY & b)
{
if (a.num! =b. hum)
{
cout<<“数组长度不相同!” <<end1;
exit (0);
}
ARRAY t (a.num);
for(int i=0;i<a.num;i++)
t.p
=a.p
+b.p
;
return t;
}
ost ream& operator<< (ostream&os, ARRAY&a)
{
int i=0;
for(;i<a.num; i++)
{
cout<<a.p
<<’ ’;
if (!((i+1) %10) ) cout<<end1;
}
return os;
}
void main ( )
{
ARRAY a(3);
a[0]=a[1] =a[2]=3;
cout<<’a’<<a<<end1;
ARRAY b ( a );
cout<<’b’<<b<<end1;
ARRAY c(2);
c=a+b+b;
cout<<’c’<<c<<end1;
c=( (b= (a+b)) +c);
cout<<’a’<<a<<’b’<<b<<’c’<<c<<end1;
a[7]=3;
cout<<a;
}
选项
答案
(1) if(i<=0) (2) num=a.num; p=new int[num]; (3) d(i>=num||i<0) (4) return * this;
解析
主要考查考生对于一个特殊的类——安全数组的掌握,其中涉及了友元函数、重载函数等,其中(2)中必需申请新的空间,这样可以使得两个对象分别占用不同的两个空间,在自动调用析构函数时不会遇到重复删除的问题,这种方法要掌握。
转载请注明原文地址:https://www.kaotiyun.com/show/j7ID777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列改革内容不是在《天朝天亩制度》中提出的一项是()
8位电脑专家对4种防病毒软件性能进行1~10的等级评定,1表示非常不好,10表示非常优越,方差分析表总结了评估结果。请补充下表的空白。
下列选项中不是乌申斯基主张的教学原则是
下列选项中不是乌申斯基主张的教学原则是
下列哪项不是具体运算时期儿童的特征?()
随机试题
综合记分卡中,客户方面的主要评价指标有()
简述现代企业生产运营管理的新特点。
简述我国工伤保险中直接经济损失与间接经济相区别的原则的含义。
CK-BB主要存在于
应用纸片法测定大肠菌群时,大肠菌群快速测定纸片在样本上的停留时间为
按《医疗事故处理条例》规定,县级人民政府卫生行政部门在收到医疗机构发生医疗意外的报告时,应移交上一级人民政府卫生行政部门处理。下列情形中不属于移交的是
慢性再障的治疗首选
我国《宪法》第36条第4款规定:“宗教团体和宗教事务不受外国势力支配。”因此,宗教团体必须坚持下列哪些原则?()
A股份有限公司于2016年1月1日向银行借入一笔生产经营用短期借款,共计120000元,期限为9个月,年利率为8%。根据与银行签署的借款协议,该项借款的本金到期后一次归还利息分月预提,按季支付。要求:根据上述资料,分析回答下列问题。1月1日,借入短期
詹姆斯.乔伊斯的《尤利西斯》手稿在拍卖会上露面时,考虑到手稿并不完整,只是其中一个章节,拍卖行保守给出60万至90万美元的估价,最终成交价却高达150万美元。《尤利西斯》是爱尔兰的文学国宝,第一次公开出版却在巴黎,手稿也一直留在国外,几十年来爱尔兰人都以此
最新回复
(
0
)