方法问题
来源:8-17 面向对象的抽象法则2
慕尼黑8261772
2020-08-22
#include <iostream>
class Shape{
public:
virtual double Area(){ return 0; };
void Display(){
std::cout<<Area()<<std::endl;
};
};
class Square: public Shape{
public:
Square(double len):_len(len){}
double Area() const{
return _len*_len;
}
private:
double _len;
};
class Circle: public Shape{
public:
Circle(double radius):_radius(radius){};
double Area() const{
return 3.1415926*_radius*_radius;
}
private:
double _radius;
};
int main() {
Square s1(2.0);
Circle c1(2.0);
s1.Display();
s1.Area();
return 0;
}
Display的方法是shape类的,不是Square类的。打印出来是0
写回答
2回答
-
一般来说,C++要实现多态需要用指针,你好好看看视频里面多态怎么用的。
012020-08-24 -
little_forest
2020-09-20
你这里的问题应该是子类重写的Area的返回值有const,但是抽象方法返回值没有const.所以没有真正的重写,访问的是基类的方法。
30
相似问题