joe*_*_89 0 c++ information-hiding pimpl-idiom interface
为什么不选择这个设计:
// A.hpp
class A
{
public:
void do_something();
};
// A.cpp
#include "A.hpp"
#include <vector>
std::vector<int> impl_database_for_do_something;
static void impl_helper_for_do_something(const std::vector<int>& database){}
void A::do_something(){ impl_helper_for_do_something(impl_database_for_do_something); }
Run Code Online (Sandbox Code Playgroud)
而不是这一个:
// A.hpp
#include <vector>
class A
{
public:
void do_something();
private:
std::vector<int> database_for_do_something_;
void helper_for_do_something(const std::vector<int>& database){}
};
Run Code Online (Sandbox Code Playgroud)
我可以隐藏实现细节并使用源文件中定义的变量和静态函数加速编译吗?如果没有,这个设计有什么问题(除了继承)?
如果你按照你的建议使用全局向量存储状态,你将以某种方式确保A类的不同实例使用向量的不同部分(除了这样做的明显困难之外,考虑如果不同的线程使用它会变得多难A)的不同实例.如果A是单身,这种设计非常有意义.
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |