请使用“答题”菜单或使用VC6打开考生文件夹proj1下的工程proj1,其中有“住宅”类Home和主函数main的定义。程序中位于每个/ERROR**********found**********下的语句行有错误,请加以更正。更正后程序的输出应该是: 南

admin2021-09-05  24

问题 请使用“答题”菜单或使用VC6打开考生文件夹proj1下的工程proj1,其中有“住宅”类Home和主函数main的定义。程序中位于每个/ERROR**********found**********下的语句行有错误,请加以更正。更正后程序的输出应该是:
南21条12号
李四
注意:只能修改每个//ERROR**********found**********下的那一行,不要改动程序中的其他内容。
#include
usingnamespacestd;
classHome{//"住宅"类
char*addresS;//地址
char*owner;//业主姓名
public:
//EFRROR**********found**********
Home(constchar*ad=NULL,constchar*ow)
{
//EFRROR**********found**********
if(ad=NULL)
address=NULL;
else{
address=newchar[strlen
(ad)+1];
strcpy(address,ad);
}
if(OW==NULL)
owner=NULL;
else{
owner=newchar[strlen(ow)+1];
strcpy(owner,ow);
}
}
~Home()t
if(address)delete[]address;
//ERFOR**********found**********
if(owner)deleteowner;
}
constchar*getAdress()const{
returnaddress,}
constchar*getOwner()const{returnowner;}
};
intmain(){
Homemyhome("南21条12号","李四");
cout<cout<return0;
}

选项

答案(1)Home(constchar*ad=NULI.,constchar*ow=NULL)或Home(constchar*ad,constchar*ow) (2)if(ad==NULL) (3)if(owner)delete[]owner;

解析 (1)主要考查考生对构造函数默认参数的掌握,如果有一个形参具有默认实参,那么它后面所有的形参都必须有默认实参。Home构造函数中ad具有默认实参,所以ow也必须有默认实参。
(2)主要考查考生对赋值操作符和相等操作符区别的掌握,在if语句的判断条件中,使用赋值操作符时,表达式值始终为true,这里需要修改为相等操作符。
(3)主要考查考生对动态分配的掌握,在Home构造函数中,使用newchar[]对owner动态分配内存,那么在析构函数中,必须对应使用delete[]owner释放内存。
转载请注明原文地址:https://kaotiyun.com/show/k65p777K
0

最新回复(0)