c ++ - 继承 - 两个不同类中的相同方法名称

时间:2015-04-10 13:53:47

标签: c++ class inheritance

我是C++的新人,我可能很容易对你提问。

class circle {
  protected:
     int r;
  public:
     circle(int re) { r=re; }

     double surface() {
        return 3.14*r*r;
     }
 };

 class sphere : public circle {
    public:
      sphere(int r) : circle(r) {}
      double surface(){
        return 4*3.14*r*r;
      }
 };

现在,我的问题是如何做到这一点:创建一个球体对象并使用它来获得不是球体而是圆形的表面。我可以在两个类中使用相同的方法名称,当第二个类继承一个时?

2 个答案:

答案 0 :(得分:4)

您可以通过在其名称前附加surface来访问基类“circle::方法:

sphere sph(1);
double s = sph.circle::surface();

答案 1 :(得分:3)

您的设计最初是错误的。 C ++中的公共继承意味着子是特定类型的父。球体不是圆圈!

此外,如果你想获得球体的表面区域,你应该使表面功能virtual

class Circle {
    public:
    virtual double surface();
};

这样,当您在Sphere中覆盖它时,将调用Sphere版本。