阅读以下说明和C++代码,将应填入(n)处的字句写在对应栏内。 【说明】 以下C++程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类 Triangle、Rectangle和Square分别表示三角形、矩形和正方形:抽象类

admin2013-01-05  25

问题 阅读以下说明和C++代码,将应填入(n)处的字句写在对应栏内。
    【说明】
   以下C++程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类 Triangle、Rectangle和Square分别表示三角形、矩形和正方形:抽象类Figure提供了一个纯虚函数getAxea(),作为计算上述3种图形面积的通用接口。
   【C++代码】
   #include<iostream>
   #include<cmath>
   using namespace std;
   class Figure{
   public:
         virtual double getArea()=0;//纯虚函数
   };
   class Rectangle : (1) {
   protected:
         double height;
         double width;
   public:
         Rectangle(){}
         Rectangle(double height, double width){
              this->height=height;
              this->width=width;
        }
       double getArea(){
             return  (2);
       }
};
class Square:  (3)  {
public:
     Square(double width){
           (4);
     }
};
class Triangle: (5) {
private:
     double la,lb,lc;
public:
    Triangle(double la,double lb,double lc){
          this->la=la;this->1b=1b;this->lc=lc;
    }
    double getArea(){
          double s=(la+lb+lc)/2.0;
          return sqrt(s*(s-la)*(s-lb)*(s-lc));
    }
int main()
{
     Figure *figures[3]={new Triangle(2,3,3),new Rectangle(5,8), new Square(5)};
     for(int i=0;i<3;i++){
            cout<<"figures["<<i<<"]area="<<(figures)->getArea()<<endl;
     }
     return 0;
}

选项

答案(1) public Figure (2) height *width (3) public Rectangle (4) height=this->width=width (5) public Figure

解析 根据题述“抽象类Figure提供了一个纯虚函数getArea(),作为计算上述3种图形面积的通用接口”,可知类Rectangle均应继承自类Figure,并实现其抽象方法getArea。故空(1)应填 public Figuare。
   getArea方法是计算面积的,空(2)是返回该类的代表的图形面积。类Rectangle代表矩形,而矩形的面积的计算公式是长与宽的乘积,类Rectangle的成员变量height和width分别代表了长和宽,故空(2)应填height*width。
   类Square按理应该继承自Figuare,但并未实现其抽象方法getArea,若继承自Figure则不能被实例化,而题中main函数中已将其实例化,不符合题意,因此不能继承自Figure。考虑到正方形其实就是长和宽相等的矩形,因此Square可从Rectangle继承,故空(3)应填public Rectangle。这样,计算面积仍用Rectangle的getArea方法,这就要求将height和width正确赋值,题中已将这两个成员变量声明为protected,因此这两个变量继承为子类的变量,故空(4)应填height=this->width=width。
   空(5)同空(1),应填public Figure。
转载请注明原文地址:https://kaotiyun.com/show/aeDZ777K
0

相关试题推荐
最新回复(0)