【发布时间】:2014-09-18 07:18:30
【问题描述】:
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 被声明为结构而不是类?
【问题讨论】:
-
隐藏已经隐藏的东西是没有意义的。
private对class的默认访问与public对struct的默认访问似乎有点矫枉过正。 -
它绝对没有任何区别(除非你的编译器非常错误)。
-
@WhozCraig 但这是一个前瞻性声明。在这种特殊情况下,它完全没有区别。它甚至不保存打字:-)
-
@juanchopanza 我完全同意。它是我评论的正常decl这个词的语言差异。你说得对,它真的没有任何功能上的区别。
标签: c++ pimpl-idiom