列表

详情


()(共15分)
  阅读下列说明、图和C++代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
  已知四个类之间的关系如图5-1所示,分别对每个类的方法进行编号,例如Shape的perimeter()方法为1号,表示为“1:perimeter()”,Rectangle类的perimeter()为2号,表示为“2:perimeter()”,依此类推,其中,每个类的perimeter方法都为虚函数且方法签名相同。

【C++代码】  Triangle *tr = new Triangle();

  Square *sq = new Square();
  Shape *sh = tr;

【问题1】 关于上述C++代码中sh 和 tr的以下叙述中,哪两个是正确的(写出编号)。
  ① sh 和 tr分别引用同一个对象;
  ② sh 和 tr分别引用同一类型的不同的对象;
  ③ sh 和 tr分别引用不同类型的不同对象;
  ④ sh 和 tr分别引用同一个对象的不同拷贝;
  ⑤ sh 和 tr所引用的内存空间是相同的。
【问题2】 写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无”)。
  tr->height()    (1)
  sh->perimeter()     (2)   
  sq->height()    (3)   
  sq->perimeter() (4)   
  sh->height()    (5)   
  tr->perimeter() (6)   
【问题3】 不考虑内存释放问题,下列赋值语句中哪两个是合法的(写出合法赋值语句的编号)。
  ① sq = sh;  ② sh = tr;  ③ tr = sq;  ④ sq = tr;  ⑤ sh = sq;

参考答案:

详细解析:

上一题