显示继承类的区域值

时间:2017-01-26 04:54:08

标签: c++ polymorphism virtual-functions

在下面的代码中,如何显示矩形和三角形的区域。目前我只能打印字符串但返回区域。那么如何从函数中打印返回的值。我应该在代码中更改什么,请帮忙。

class Shape {
   protected:
      int width, height;

   public:
      Shape( int a = 0, int b = 0) {
         width = a;
         height = b;
      }

      virtual int area() {
         cout << "Parent class area :" <<endl;
         return 0;
      }
};

class Rectangle: public Shape {
   public:
      Rectangle( int a = 0, int b = 0):Shape(a, b) { }
      int area () {
         cout << "Rectangle class area :" <<endl;
         return (width * height);
      }
};

class Triangle: public Shape{
   public:
      Triangle( int a = 0, int b = 0):Shape(a, b) { }
      int area () {
         cout << "Triangle class area :" <<endl;
         return (width * height / 2);
      }
};

// Main function for the program
int main( ) {
   Shape *shape;
   Rectangle rec(10,7);
   Triangle  tri(10,5);

   // store the address of Rectangle
   shape = &rec;

   // call rectangle area.
   shape->area();

   // store the address of Triangle
   shape = &tri;

   // call triangle area.
   shape->area();

   return 0;
}

1 个答案:

答案 0 :(得分:0)

更改区域功能如下:

int Rectangle::area() {
    int ret = width * height;
    cout << "Rectangle class area : " << ret << endl;
    return ret;
}

int Triangle::area() {
    int ret = width * height / 2;
    cout << "Triangle class area :" << ret << endl;
    return ret;
}