问题
填空题
不考虑内存释放问题,下列赋值语句中哪两个是合法的(写出合法赋值语句的编号) ①sq=sh;②sh=tr;③tr=sq;④sq=tr;⑤sh=sq。
答案
参考答案:②⑤
解析: 根据题中代码可知,仃指向一个Triangle对象,sq指向一个Square对象,sh和tr指向同一个Triangle对象。所以问题1中①⑤正确,由于sh和tr指向同一个对象,其引用的内存空间也必然相同,②③④错误。对于问题2中的消息,tr指向Triangle对象,所以tr->heighl:( )调用Triangle类的height方法;sq指向Sqtlare对象,但Square没有height方法,所以sq->height( )没有对应任何方法调用,但Square类有perimeter方法,所以sq->perimeter( )调用Sqtlare类的perimeter方法,其他几项同上。问题3中,赋值运算的左边应该是右边的父类或同一类型才可以正确赋值。所以正确的是②⑤。