定义仅调用私有功能的公共功能的好处是什么

时间:2019-03-26 01:08:45

标签: c++

一段时间以前,我正在阅读我的一位教授编写的代码,我注意到他的这种做法是从不使用封装类内部的公共函数。即使公共函数是单行的,其唯一的工作就是简单地将参数传递给私有函数。所以他所有的课看起来都像这样

class A{
public:
    void do_work(Some_object& obj){
        m_do_work(obj);
    }

private:
   void m_do_work(Some_object& obj){
        // actual work is done here
   }

};

这似乎浪费了开发时间和运行时间,因为额外级别的间接操作会增加开销。那么,这种风格的真正好处是什么?

2 个答案:

答案 0 :(得分:0)

公共函数是公共接口,它定义类的用户查看类的方式。

您的教授正在将实现的细节隐藏在私有功能中,并通过额外的间接级别,他可能打算保留公共功能的原始实现,同时在以后仅更改私有功能的内部。 它使事情变得更加模块化,以牺牲性能为代价。

除了教学示例之外,如果此类调用影响应用程序的关键路径,则必须通过性能分析来做出决定。

答案 1 :(得分:0)

我曾经这样做过,可以在类的内部和外部调用私有函数。由于我的公共函数必须在调用此函数之前锁定互斥体,而我的私有函数则不需要,因此它很有用。就是这样;

public:
    void set_configuration()
    {
        std::lock_guard<std::mutex> lg(m);
        reconfigure_output();
    }

private:
    void reconfigure_output()
    {
        ...
    }
    void some_other_function()
    {
        ...
        reconfigure_output();
    }