请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程pmj1。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: value=63 number=1 注意:只修改每个“//ERR

admin2019-05-14  38

问题 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程pmj1。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
value=63
number=1
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include
USing namespace std;
class MyClass{
  int*P;
  const int N;
public:
//ERROR**********found**********
  MyClass(int val):N=1
  {
P=new int;
‘P=val;
)
//ERROR**********found***********
  ~MyClass(){delete*P;}
  friend void print(MyClass&obj);
};
//ERROR**********found***********
void MyClass::print(MyClass&obj)
{
  cout<<”value=”<<“ (obj.P)  <<
endl;
  cout<<”number=”  <endl;
}
int main()
{
  MyClass obj(63);
  print(obj);
  return 0;
}

选项

答案(1)MyClass(int val):N(1) (2)~MyClass(){delete[]p;} (3)void print(MyClass&obj)

解析 本题考查MyClass类,其中涉及动态数组、构造函数、析构函数和友元函数。构造函数的成员列表初始化格式为:私有成员(参数)……{},不能用赋值语句。析构函数使用delete语句,delete语句的语法是:delete[]指针。
【解题思路】
(1)主要考查考生对构造函数的掌握,在这里不能使用赋值语句。
(2)主要考查考生对析构函数的掌握,析构函数的delete语句要使用标识符“[],’,即delete[]p;。
(3)主要考查考生对友元函数的掌握,友元函数并不属于类,因此定义时前面不用加类名和作用域符号。
【解题宝典】友元函数考查较少,但也是很关键的,友元函数并不属于类,只是可以使用类的私有成员而已,因此定义的时候就当作普通函数处理即可。
转载请注明原文地址:https://jikaoti.com/ti/tvA0FFFM
0

最新回复(0)