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
}
};
这似乎浪费了开发时间和运行时间,因为额外的间接级别有它的开销。那么这种风格的实际好处是什么?
解决方案
我曾经这样做是为了在课堂内外调用私有函数。由于我的公共函数必须在调用这个函数之前锁定一个互斥锁,而我的私有函数没有,所以它很有用。是这样的;
public:
void set_configuration()
{
std::lock_guard<std::mutex> lg(m);
reconfigure_output();
}
private:
void reconfigure_output()
{
...
}
void some_other_function()
{
...
reconfigure_output();
}
推荐阅读
- php - 如何使用下拉列表发送排序
- javascript - 如何使 ReactJS onClick 函数更改文本区域的值?
- python - 创建用于将非字母数字字符转换为破折号的 Python 类
- c# - 循环为列表中的每个对象添加一个json
- reactjs - 在 React 中使用 Jest 和 Enzyme 进行测试时遇到错误
- android - 我们可以使用多个按钮从内部存储中选择文件并使用相同的按钮上传到数据库吗
- .net - 如何将 Docker 容器的相对路径重新映射到外部环境中的绝对路径?
- python - 将嵌套 python 列表简化为结构化树的最佳方法(同时保留顺序)
- spring-boot - 在 Axios 中向 Spring Boot Server 发送 RequestParam
- flutter - Dart 生成器:为什么我得到类型“LibraryDirectiveImpl”不是“Statement”类型的子类型