把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(); }

你可能感兴趣的:(C++,struct,Class)