问答题 请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: The extension is:CPP 注意:只修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。 // proj1.epp #include <iostream> using namespace std; class MyClass { char * p; public: MyClass(char c) {p = new char; * p=c;} // ERROR ******** found******** MyClass (const MyClass copy) { p =new char; * p = * (copy.p); } // ERROR ******** found******** ~MyClass() { free p; } MyClass& operator = (const MyClass & rhs) { if ( this == &rhs ) return * this; *p = * (rhs.p); // ERROR ******** found******** return this; } char GetChar() const { return * p; } }; int main() { MyClass obj1('C'), obj2 ('P'); MyClass obj3(obj1); obj3 = obj2; cout << "The extension is:" <<obj1.GetChar () <<obj2.GetChar() <<obj3.GetChar () << endl; return 0; }
【正确答案】(1)MyClass(const MyClass & copyr){p=new char;*p=*(copy.p);} (2)~MyClass(){delete p;} (3)return*this;
【答案解析】[考点] 本题考查MyClass类,其中涉及动态数组、构造函数、复制构造函数、析构函数和运算符重载。 [解析] (1)主要考查考生对复制构造函数的掌握,复制构造函数的形参是引用调用。 (2)主要考查考生对析构函数的掌握,析构函数使用delete语句释放指针。 (3)主要考查考生对this指针的掌握,函数要求返回MyClass,可知要返回的是this指针指向的当前类,而非tins指针。