一切未定! 2021-10-21 23:20 采纳率: 0%
浏览 10

为什么使用基类指针调用派生类重写的虚函数时,运行结果却不显示调用的虚函数

#include
using namespace std;
class Shape
{
public:
Shape(){}
~Shape(){}
virtual float getArea()
{
return -1;
}
virtual float getLen()
{
return -1;
}

};
class Rectangle:public Shape
{
public:
Rectangle(float len,float width):_Len(len),_Width(width){}
~Rectangle()
{
cout<<"调用析构函数"<<endl;
}
virtual float get_Len() { return _Len; }
virtual float get_Width() { return _Width; }
virtual float getArea()
{
return _Len * _Width;
}
virtual float getLen()
{
return 2 * _Len * _Width;
}
private:
float _Len;
float _Width;
};
class Circle:public Shape
{
public:
Circle(float r):_R(r){}
~Circle()
{
cout<<"调用析构函数"<<endl;
}
virtual float get_R(){return _R;}
virtual float getArea()
{
return 3.14 * _R * _R;
}
virtual float getLen()
{
return 3.14 * 2 * _R;
}
private:
float _R;
};
int main()
{
Rectangle rectangle(3,6);
Shape *z = &rectangle;
z->getArea();
z->getLen();
Circle circle(10);
Shape *c = &circle;
c->getArea();
c->getLen();
//system("pause");
return 0;

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-10-21 23:32
    关注

    你是咋看出来的呢?你的代码没有问题啊,getArea和getLen都调用了子类的函数啊

    评论

报告相同问题?

问题事件

  • 创建了问题 10月21日

悬赏问题

  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?