题库 题库

【简答题】

试题五(共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;

参考答案

 [问题1] ① ⑤
 [问题2] (1)3 (2)5 (3)无 (4)4 (5)无 (6)5
 [问题3] ② ⑤

相关试题