使用VC6打开考生文件夹下的工程proj2。此工程包含一个源程序文件main2.cpp,但该程序运行有问题。请改正main函数中的错误。 源程序文件main2.cpp清单如下: //main2.cpp #include <iostream

admin2009-01-15  25

问题 使用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<<"MyObject has member"<<myObj.GetMember()<<end1;”。对象指针使用方式有两种:“对象指针名->成员名;”和“(*对象指针名)成员名;”。显然上述语句的对象指针的使用方式是错误的。应改为“cout<<"My object has member"<<myObj->  GetMember()<<end1;”,  或者“cout<<"My  Object has member"<<(*myObj).GetMember()<<end1;”。
转载请注明原文地址:https://kaotiyun.com/show/WKID777K
0

最新回复(0)