gpt4 book ai didi

c++ - 防止库内部内容在 .h 中可见

转载 作者:太空狗 更新时间:2023-10-29 23:43:57 25 4
gpt4 key购买 nike

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

我知道,在将代码放入 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com