首页 > 解决方案 > 定义只调用私有函数的公共函数有什么好处

问题描述

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

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
   }

};

这似乎浪费了开发时间和运行时间,因为额外的间接级别有它的开销。那么这种风格的实际好处是什么?

标签: c++

解决方案


我曾经这样做是为了在课堂内外调用私有函数。由于我的公共函数必须在调用这个函数之前锁定一个互斥锁,而我的私有函数没有,所以它很有用。是这样的;

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

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

推荐阅读