只需要知道我在函数areacalc()
中调用函数float getarea()
的方式是否有效。只需要知道我是否可以在访问器函数内调用私有成员函数。 areacalc()
是私有成员函数,而float getarea()
是访问器函数。
class triangle
{
private:
float s1,s2,s3;
float s,area;
void areacalc()
{
s=(s1+s2+s3)/2;
area=sqrt(s*(s-s1)*(s-s2)*(s-s3));
}
public:
float getarea ()
{
areacalc();
return area;
}
};
答案 0 :(得分:1)
可以!更严重的是,这正是存在私有方法的原因:私有方法进行内部操作,并从同一类的其他(可能是公共)方法中调用。
公共成员(方法和数据成员)构成了通常称为类的接口的东西。这意味着可以从类外部直接使用什么。私有(或受保护的点与此相同)构成了 private 实现。在成熟度方面,接口部分应该是稳定的,而实现部分则可以随时更改。
因此,您的设计在这里非常干净:
float getarea()
是公共访问者,可以在任何地方使用void calcarea()
是从该公共方法调用的私有方法一个很好的封装示例。