使用VC6打开考生文件夹下的工程RevProj13。此工程包含一个源程序文件RevMain13.cpp,但该程序中类的定义有错误。请改正程序中的错误,使它能得到正确结果。
注意,不要改动主函数,不得删行或增行,也不得更改程序的结构。
源程序文件RevMain13.cpp中的程序清单如下;
//RevMain13.cpp
#include<iostream>
using namespace std;
class MyClass
public:
MyClass(int a=0,b=1);
Print();
private:
int x;
int y;
;
MyClass::MyClass(int a=0,int b=1)
x=a;
y=b;
void MyClass::Print()
cout<<"x="<<x<<end1;
cout<<"y= "<<y<<end1;
int main()
MyClass obj(1,2)
obj.Print();
return 0;
参考答案:正确的类MyClass的定义如下:
class MyClass
{
public:
MyClass(int a=0,int b=1);
void Print();
private:
int x;
int y;
};
MyClass: :MyClass(int a,int b)
{
x=a;
y=b;
}
void MyClass::Print()
{
cout<<"x="<<x<<end1;
cout<<"y="<<y<<end1;
}
解析: 类MyClass的定义中共有3处错误。
①构造函数定义错误,语句“MyClass(int a=0,b=1);”应该改为“MyClass(int a=0,int b=1);”。
②构造函数在说明时已给出参数的默认值。因此,在其实现时,不能再定义默认值。即语句“MyClass::MyClass(int a=0,int b=1)”应改为“MyClass::MyClass(int a,int b)”。
③成员函数Print()在类中声明时,没有给出函数的返回类型。类的成员函数一定要给出函数的返回类型。