虚函数无法显示正确的结果

时间:2012-08-09 17:45:58

标签: c++

我已经完成了C ++程序,我的基类即Shape完成了获取数据的工作,而其他两个派生类TriangleRectangle计算了该区域。问题是我将该区域视为一些垃圾值。我已经完成了代码,请看一下并指导我。感谢

 #include<iostream>
 using namespace std;

  class Shape{
  protected:  double b,h;

   public:void get_data()
      {
        cout<<"Enter the height\n";
        cin>>h;
         cout<<"Enter the breadth\n";
         cin>>b;

         }
   virtual void display_area(){}

  };



  class Rectangle:public Shape
  {
     public:void display_area(){
     cout<<"\n\nArea of Rectangle:" << b*h;
    }
   };

 class Triangle:public Shape
  {

    public:void display_area(){
     cout<<"\n\nArea of Triangle:"<<0.5*b*h; 
     }
 };

  int main()
  {
     Shape s;
     Triangle t;
     Rectangle r;
     Shape *ptr;

     ptr=&s;
     ptr->get_data();

     ptr=&t;
     ptr->display_area();

     ptr=&r;
     ptr->display_area();
     return 0;
 }

1 个答案:

答案 0 :(得分:5)

您致电s.get_data(),但未致电t.get_data。因此,b, ht中的r将是垃圾。