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

Nyf*_*fer 0 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;
 }
Run Code Online (Sandbox Code Playgroud)

And*_*gia 5

你喊了s.get_data(),但没有t.get_data.因此b, h将是垃圾tr.