方法问题
来源: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
相似问题
 
						