为什么我的虚拟函数不分配值?

问题描述 投票:0回答:1

我正在尝试使用虚函数来计算矩形和三角形的面积,如下所示:-

#include<iostream>
using namespace std;

class Shape{
   public:
   int width;
   int height;
   void get(){
       cin>>width;
       cin>>height;
   }

   virtual void area(){
       cout<<"Calculates area";
   }
};

class Triangle:public Shape{

  void area(){
      int a = height*width/2;
      cout<<a<<endl;
  }
};

class Rectangle:public Shape{

  void area(){
      int a = height*width;
      cout<<a<<endl;
  }
};





int main(){
    Shape shapeObj;
    shapeObj.get();

    Shape *ptr;
    Triangle trObj;
    Rectangle rectObj;

    ptr=&trObj;
    ptr->area();

    ptr=&rectObj;
    ptr->area();
}

但是我的程序将两个形状的面积都返回0。我认为在Triangle和Rectangle类中未分配width和height的值。有人可以告诉我我要去哪里哪里吗?

c++ function virtual
1个回答
0
投票

问题是宽度和高度分配给了shapeObj变量

© www.soinside.com 2019 - 2024. All rights reserved.