类名(声明)后的双冒号 - 这是什么意思
double colon after class name (declaration) - what does that mean?
我一直想知道以下内容是什么意思(代码片段取自cppreference pimpl(
class widget::impl {
^^^^^^^^^^^^
...
};
a_class::another_class
是什么意思?这是一个命名空间吗?或者这是一个被宣布为主类之外的内部类?
或者这是一个被宣布为主类之外的内部类?
宾果游戏。需要明确的是,iit 实际上是在封闭类之外定义的内部类。
如果您希望一个类具有对类的类似成员的访问权限作为实现详细信息,但又不想将该嵌套类的定义发布到类的客户端,这是一个方便的技巧。
::
运算符是范围解析运算符。它限定表达式的范围。在您的情况下,它限定表达式class impl
的作用域为 widget
,即属于 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
};
范围解析运算符允许您清楚地声明要定义的类。
它是一个内部类。
class Widget
{
// ...
private:
class impl;
};
// Then, typically in a separate implementation file:
class Widget::impl
{
public:
// ...
T1 t1_;
T2 t2_;
};
可以是内部类的前向声明,例如:
class A{
class B;
};
class A::B {
};
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思