我一直在想什麼呢下面平均值(從cppreference pimpl採取的代碼片段)類名後的雙冒號(聲明) - 這是什麼意思?
class widget::impl {
^^^^^^^^^^^^
...
};
是什麼a_class::another_class
意思?那是一個名字空間嗎?或者是內部類宣佈不是主要類?
我一直在想什麼呢下面平均值(從cppreference pimpl採取的代碼片段)類名後的雙冒號(聲明) - 這是什麼意思?
class widget::impl {
^^^^^^^^^^^^
...
};
是什麼a_class::another_class
意思?那是一個名字空間嗎?或者是內部類宣佈不是主要類?
或者說是一個內部類聲明不主要的類?
賓果。要超清楚,iit實際上是一個內部類,它定義了以外的封閉類。
這是一個方便的技巧,如果你想使用你的類作爲實現細節成員般的訪問類,但不希望該嵌套類的定義發佈到你的類的客戶。
這是一個內部類。
class Widget
{
// ...
private:
class impl;
};
// Then, typically in a separate implementation file:
class Widget::impl
{
public:
// ...
T1 t1_;
T2 t2_;
};
:-) auto_ptr被刪除 –
可能是內部類的前向聲明例如爲:
class A{
class B;
};
class A::B {
};
的::
運算符是scope resolution operator的聲明。它限定了表達的範圍。在你的情況下,有資格與範圍widget
表達class impl
,即屬於widget
類impl
。請看下面的例子,其在不同的範圍定義了兩個impl
類:
// global impl
class impl;
class widget
{
// widget's impl
class impl;
};
class widget::impl
{
// Define widget's impl
};
class impl
{
// Define global impl
};
範圍解析運算符可以讓你清楚地聲明您所定義的類。
的可能的複製[什麼是預謀雙冒號的意思是「::」?](http://stackoverflow.com/questions/4269034/what-is-the-meaning-of-prepended-double-colon) – Badda
@Badda:「前綴」是指「前」,而不是「之間的」或「後」。 (IOW,不是重複的,C++語法對命令非常敏感) – MSalters