gpt4 book ai didi

c++ - 为什么应该将 pimpl 声明为结构而不是类?

转载 作者:可可西里 更新时间:2023-11-01 18:26:22 26 4
gpt4 key购买 nike

pimpl 习语的规范形式(来自 Herb Sutter 的“Exceptional C++”)如下:

class X 
{
public:
/* ... public members ... */
protected:
/* ... protected members? ... */
private:
/* ... private members? ... */
struct XImpl;
XImpl* pimpl_; // opaque pointer to
// forward-declared class
};

我的问题是,为什么 XImpl 声明为结构而不是类?

最佳答案

structclass 之间的唯一区别是基类和成员(分别为公共(public)和私有(private))的默认访问控制。您甚至可以用一个声明相同的类型并用另一个定义它(但请注意,某些编译器可能会对此发出警告)。

只使用对您来说最自然的任何东西。 @WhozCraig 正确地指出,由于 XImpl 在实现 X 之外已经不可访问,因此默认情况下使其成员 private 似乎是多余的。尽管如此,正如我上面所说的,它在这里根本没有区别,因为重要的只是用于定义的关键字。

关于c++ - 为什么应该将 pimpl 声明为结构而不是类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25906525/

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