我一直想知道下面的意思是什么(摘录自cppreference pimpl)
class widget::impl {
^^^^^^^^^^^^
...
};
Run Code Online (Sandbox Code Playgroud)
什么a_class::another_class意思 那是一个名称空间吗?还是内部类被声明为不在主要类之外?
或者这是一个在主类之外声明的内部类?
答对了。非常清楚的是,它实际上是在封闭类外部定义的内部类。
如果您希望一个类对您的类具有类似成员的访问权限作为实现细节,但又不想将该嵌套类的定义发布到您的类的客户端,那么这是一个方便的技巧。
该::运算符是范围解析运算符。它限定表达式的范围。class impl在您的情况下,它用范围限定表达式,这意味着属于 的widget类。考虑以下示例,它在不同范围定义了两个类:implwidgetimpl
// global impl
class impl;
class widget
{
// widget's impl
class impl;
};
class widget::impl
{
// Define widget's impl
};
class impl
{
// Define global impl
};
Run Code Online (Sandbox Code Playgroud)
范围解析运算符允许您清楚地声明您正在定义哪个类。