0
点赞
收藏
分享

微信扫一扫

把private声明从.h文件移到.cpp文件


把private声明从.h文件移到.cpp文件
金庆的专栏

在*.h文件中定义一个类时,理论上应该仅定义其公共接口,而不必声明其私有的成员,因为私有的成员属于实现部分,理应声明在.cpp文件中。

可是现有的C++标准是不支持将一个类的定义分到两个文件中去的。

有一个pimpl模式,可以变相完成这个要求,只暴露公共接口,而实现定义为私有。pimpl 即 private implemention 的缩写。不光封装性好,还可以减少头文件依赖,提高编译速度。

例如:(来自: 关于handle-body的用法及loki::PimplT的分析 )

/*.h*/ 

class CTest 

{ 

public: 

    void Test(); 

private:  

    Loki::PimplT::Type m_impl; 

}; 


/*.cpp*/ 

template<> 

struct Loki::ImplT 

{ 

public: 

    void Test() { std::cout << "test" << std::endl; } 

}; 


void CTest::Test() { return m_impl->Test(); }

举报

相关推荐

0 条评论