是否可以在C ++中的同一个类的Accessor函数内部调用私有成员函数

时间:2019-05-12 15:05:06

标签: c++

只需要知道我在函数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;
    }
};

1 个答案:

答案 0 :(得分:1)

可以!更严重的是,这正是存在私有方法的原因:私有方法进行内部操作,并从同一类的其他(可能是公共)方法中调用。

公共成员(方法和数据成员)构成了通常称为类的接口的东西。这意味着可以从类外部直接使用什么。私有(或受保护的点与此相同)构成了 private 实现。在成熟度方面,接口部分应该是稳定的,而实现部分则可以随时更改。

因此,您的设计在这里非常干净:

  • float getarea()是公共访问者,可以在任何地方使用
  • void calcarea()是从该公共方法调用的私有方法

一个很好的封装示例。