使用VC6打开考生文件夹下的工程RevProj4。此工程包含一个源程序文件RevMain4.cpp,但该程序运行有问题。请改正主函数中的错误,使之输出结果为: x=20 源程序文件RevMain4.cpp的清单如下: //RevMain4.cpp #include<iostream> using namespace std; class MyClass { public: MyClass(int a) {x=a; } void setX(int a) {x=a; } void print() {cout<<"x="<<x; } private: int x; }; int main() { const MyClass obj (10); / ************found**************/ obj.setX(20); / ************found**************/ obj.print(); return 0; }
参考答案:
解析:修改程序时可以去掉类对象定义时的const关键词。即: int main ( ) { MyClass obj (10); obj.setX(20); obj.print (); return 0; } 程序中出现了2个出错标识符,说明此程序有2处错误。 第1处错误:语句“obj.setX(20);”错误。因为类MyClass的对象obj被声明为常对象,因此,不允许修改常对象的成员变量。 第2处错误:语句“obj.print();”错误。因为类的对象被声明为常对象,因此,不是常成员函数就不能访问常对象的成员变量。虽然成员函数print()中没有修改类的对象,但是它存在修改类的成员变量的可能性。