使用VC6打开考生文件夹下的工程proj2。此工程包含一个源程序文件main2.cpp,但该程序运行有问题。请改正main函数中的错误。
源程序文件main2.cpp清单如下:
//main2.cpp
#include <iostream>
using namespace std;
class MyClass
public:
MyClass(int m)
member=m;
~MyClass()
int GetMember()
return member;
private:
int member;
;
MyClass MakeObject(int m)
MyClass *pMyClass=new MyClass(m);
return *pMyClass;
int main ( )
int x=7;
/************found**************/
MyClass *myObj=MakeObject(x);
/*************found*************/
cout<<"My object has member"<<myObj.GetMember()<<end1;
return 0;
参考答案:修改后的主函数为:
int main()
{
int x=7;
MyClass *myObj=&MakeObject(x);
cout<<"My object has member"<<myObj->GetMember()<<end1;
return 0;
}
解析: 本题考核对象指针的应用。程序中出现了2个出错标识符,说明此程序有2处错误。
第1处错误:“MyClass *myObj=MakeObject(x);”。myObj是对象指针,而函数 MakeObject( )的返回值是类MyClass的对象,所以应改为:“MyClass *myObj=&MakeObject(x);”。
第2处错误:“cout<<"My Object has member"<<myObj.GetMember()<<end1;”。对象指针使用方式有两种:“对象指针名->成员名;”和“(*对象指针名)成员名;”。显然上述语句的对象指针的使用方式是错误的。应改为“cout<<"My object has member"<<myObj-> GetMember()<<end1;”, 或者“cout<<"My Object has member"<<(*myObj).GetMember()<<end1;”。