我是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;
}
};
现在,我的问题是如何做到这一点:创建一个球体对象并使用它来获得不是球体而是圆形的表面。我可以在两个类中使用相同的方法名称,当第二个类继承一个时?
答案 0 :(得分:4)
您可以通过在其名称前附加surface
来访问基类“circle::
方法:
sphere sph(1);
double s = sph.circle::surface();
答案 1 :(得分:3)
您的设计最初是错误的。 C ++中的公共继承意味着子是特定类型的父。球体不是圆圈!
此外,如果你想获得球体的表面区域,你应该使表面功能virtual
:
class Circle {
public:
virtual double surface();
};
这样,当您在Sphere
中覆盖它时,将调用Sphere
版本。