问答题
18分
打开考生文件夹proj1下的工程proj1,其中有"住宅"类Home 和主函数main的定义。程序中位于每个// ERROR **********found*******...
打开考生文件夹proj1下的工程proj1,其中有"住宅"类Home 和主函数main的定义。程序中位于每个// ERROR **********found**********下的语句行有错误,请加以更正。更正后程序的输出应该是:
南21条12号
李四
注意:只能修改每个// ERROR **********found**********下的那一行,不要改动程序中的其他内容。
南21条12号
李四
注意:只能修改每个// ERROR **********found**********下的那一行,不要改动程序中的其他内容。
参考解析: 【参考答案】
(1) Home(const char *ad=NULL, const char * ow=NULL)或Home(const char *ad, const char * ow)
(2) if(ad==NULL)
(3) if(owner) delete []owner;
【考点分析】
本题考查Home类,其中涉及构造函数,动态分配。
【解题思路】
(1)主要考查考生对构造函数默认参数的掌握,如果有一个形参具有默认实参,那么它后面所有的形参都必须有默认实参。Home构造函数中ad具有默认实参,所以ow也必须有默认实参。
(2)主要考查考生对赋值操作符和相等操作符区别的掌握,在if语句的判断条件中,使用赋值操作符时,表达式值始终为true,这里需要修改为相等操作符。
(3)主要考查考生对动态分配的掌握,在Home构造函数中,使用new char[]对owner动态分配内存,那么在析构函数必须对应使用delete [] owner释放内存。