问答题 使用VC6打开 下的源程序文件modi.cpp,该程序运行时有错误,请改正其中的错误,使得程序正确运行。
程序输出:
s1:n=20
s2:n=10
执行s3.add(s1,s2)
s3:n=30
s4:n=30
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
#include<iostream.h>
class TestClass
{
int n;
public:
TestClass() { }
TestClass (int m)
{
n=m;
}
//********error********
TestClass add(TestClass s1, s2)
{
this->n=s1 .n+s2. n;
//********error********
return (this);
}
void disp ()
{
cout "n=" n endl;
}
//********error********
}
void main()
{
TestClass s1(20),s2(10),s3,s4;
cout "s1:";
s1.disp () ;
cout "s2:";
s2.disp();
s4=s3.add(s1,s2);
cout " 执行 s3.add(s1,s2) /ns3: ";
s3.disp ();
cout
【正确答案】
【答案解析】(1)Testclass add(Testclass s1,Testclass s2)
(2)return (*this);
(3)};
答案考生文件夹 [解析] 本题中的功能是设置类中的成员数值,然后利用成员函数add求和。从已定源程序的main主函数开始入手,可以看出程序首先通过类TestClass中的成员函数实现题目中的输出要求。
(1)打开modi1.cpp,调试程序,根据显示的错误提示,知道语句“TestClass add(TestClass s1,s2)”中的变量“s2”没有声明类型,所以补充“s2”的类型,即“TestClassadd(TestClass s1,TestClass s2)”。
(2)“this->n=s1.n+s2.n;”语句中的this变量为指针变量,所以第2个标识下的“return(this);”返回语句中的this变量,应该返回指针型,所以修改为“return(*this);”。
(3)C++中类的定义格式应为“class类名{};”,以分号为结尾,所以第3个标识下,类结尾处补充分号“;”,即修改为“};”。