使用VC6打开考生文件夹下的工程proj1。此工程包含一个源程序文件mainl.cpp,但该程序运行有问题。请改正主函数中的错误,使程序的输出结果是: member = 0 member = 5 member = 10 源程序文件 mainl.cpp 清单如下: //mainl.cpp #include <iostream> using namespace std; class MyClass { public: MyClass(int i) {member=i; } void SetMember(int m) {member=m; } int GetMember()const {return member; } void Print() const {cout<<"member="<<member<<end1; } private: int member; }; int main() { /***************found***********/ MyClass obj1; obj1. Print(); MyClass obj2(3); /***************found***********/ obj1.member = 5; /***************found***********/ MyClass. SetMember(10); obj1. Print(); obj2. Print(); return 0; }
参考答案:
解析:修改后的主函数应该为: int main() { MyClass obj1(0); obj1.Print(); MyClass obj2(3); obj1.SetMember(5); obj2.SetMember(10); obj1.Print(); obj2.Print(); return 0; } 本题主要考核类与对象的应用。程序中出现了3个出错标识符,说明此程序有3处错误。 第1处错误:“MyClass obj1;obj1.Print();”,此时对象。obj1没有给出初始化值,所以应该改为“Myclass obj1(0);obj1.Print();”。 第2处错误:“obj1.member=5;”,由于类MyClass中,数据成员member是私有成员不能通过类的对象。obj1访问。所以应该改为“obj1.SetMember(5);”。 第3处错误:“MyClass.SetMember(10);”,此处MyClass是一个类名,这样的访问方式不合法,应该改为“obj2.SetMember(10);”。