只需要知道我在函数float getarea()
中调用函数areacalc()
的方式是否有效。只需要知道我是否可以在访问器函数中调用私有(private)成员函数。 areacalc()
是私有(private)成员函数,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;
}
};
最佳答案
是的,你可以!更严重的是,这正是私有(private)方法存在的原因:它们执行内部操作并从同一类的其他(可能是公共(public)的)方法调用。
公共(public)成员(方法和数据成员)构成了通常所说的类的接口(interface)。这意味着可以从类外直接使用什么。 Private(或 protected,这点相同)构成了private 实现。在成熟度级别,接口(interface)部分应该是稳定的,而实现部分可以随时改变。
所以你的设计在这里非常干净:
float getarea()
是一个公共(public)访问器,可以在任何地方使用void calcarea()
是从公共(public)方法调用的私有(private)方法
一个很好的封装示例。
关于c++ - 私有(private)成员函数是否可以在 C++ 中同一类的访问函数内部调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56100512/