首先,第一件事:我知道我的问题很可能是基于普遍的误解,但我希望我能向大家阐明我的观点。

我知道,将代码放入C++中的不同文件时,我们确实创建了.h(用于定义)和.cpp(用于实现)。
例如,在编写类库时,我必须在 header 中同时包含私有(private)成员和公共(public)成员的定义。但是如果由于某种原因我想向用户隐藏私有(private)物品怎么办?

谢谢!

最佳答案

您使用Pimpl惯用语。 Pimpl代表“实现的指针”。基本上,您不会在类中存储实现细节。相反,您存储一个不透明的指向实现的指针,如下所示:

class MyClass
{
public:
    //public functions here
private:
    class Impl; //no definition, opaque
    Impl* pimpl;
};

然后继续仅在.cpp文件中定义MyClass::Impl类,因为只有函数定义需要它。

PIMPL习惯用法的另一个好处是,只要不改变类的接口(interface),对实现所做的任何更改都不需要重新编译类客户端。

关于c++ - 防止库内部内容在.h中可见,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38187401/

10-11 16:04