c++ - 私有(private)成员函数是否可以在 C++ 中同一类的访问函数内部调用

标签 c++

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

相关文章:

c++ - C++中MD5的快速实现

c++ - 非常大数的对数

C++ 对指针 vector 进行排序,其中对象表示矩阵坐标

c++ - 原子写入和 volatile 读取

c++ - 如何从同一项目中的另一个 VC++ 项目引用一个 VC++ 项目?

c++ - QThread 错误,未在此范围内定义

c++ - 如何在可变参数模板上生成递归数据结构?

c++ - 自定义 std::shared_ptr 删除器

c++ - 具有不同字符大小的 spirit::qi::grammar-name

c++ - 多边形内的点(不包括边界)