问答题 [说明] 以下C++代码使用虚函数实现了同一基类shape派生出来的Class rectangle、Class triangle、Class circle实现了计算矩形、圆形面积的计算。仔细阅读以下代码,将{{U}} (n) {{/U}}处语句补充完整。 [代码5-1] #include<iostream.h> #define PI 3.14159 class shape {//基类 protected: {{U}}(1) {{/U}}; public: {{U}} (2) {{/U}}; {{U}} (3) {{/U}}; }; [代码5-2] class rectangle: public shape { public: rectangle (int x2,int y2,int r2): {{U}}(4) {{/U}}{}; double area ( ) {return x*y; }; }; class circle: public shape { public: circle (int x3,int y3,int r3): {{U}}(5) {{/U}}{}; double area ( ) {return r*r*PI; }; }; [代码5-3] void main ( ) { rectangle r (10,20,0); circle c (0,0,30); shape {{U}}(6) {{/U}}; cout<<"长方形面积="<<s1->area ( ) <<endl; cout<<"圆形面积="<<s2->area ( ) <<endl; } [运行结果] 长方形面积=200 圆形面积=2827.43
【正确答案】
【答案解析】(1)intx,y,r; (2)shape (int x1,int y1,int r1): x(x1),y(y1),r(r1){}; (3)double virtual area ()=0; (4)shape (x2,y2,r2) (5)shape (x3,y3,r3) (6)*s1=&r,*s2=&c; [解析] 本题C++代码使用虚函数用同一基类shape派生出来的Class rectangle、Class triangle、Class circle实现了计算矩形、圆形面积的计算。各空实现的功能是:(1)x,y存储长与宽,r存储半径;(2)构造函数;(3)面积虚函数,旨在定义不同面积公式;(4)构造函数;(5)构造函数;(6)类变量定义,根据下文用到的变量可推知。