类名中使用的范围解析运算符是什么意思
what does the scope resolution operator used in a class name mean
我遇到了这段代码。
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
}
SomeClass 是一个类,所以也许 OtherClass 是一个存在于 SomeClass 范围内的类?我只是从未见过它以这种方式完成。
那么,这就是它的意思吗?
也许OtherClass是一个存在于SomeClass范围内的类?
给自己一个复选标记。就是这个意思。
这用于在 SomeClass
中声明后定义OtherClass
:
class SomeClass {
class OtherClass;
OtherClass* GetOtherClassInstance() { ...}
};
class SomeClass::OtherClass {
}
如果内部类仅在外部类的上下文中有意义,则可以这样做。
class Vector {
class Iterator;
Iterator* GetStart();
};
class Vector::Iterator {
details.
}
正如在其他地方提到的,pimpl 习语是具有延迟定义的内部类的绝佳用法。
这意味着 OtherClass 是 SomeClass 的内部类。 最好已经在那里宣布了。 适合痘痘成语:
struct my_object {
...
private:
struct my_impl;
my_impl * pimpl;
};
// in a cpp file...
struct my_object::my_impl {
...implementation details of my_object
};
我认为SomeClass
是OtherClass
所在的命名空间
class BaseClass {};
namespace SomeClass
{
class OtherClass;
};
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
};
某个类是基类的名称,而其他类是派生类,它链接派生类的内部,在冒号派生类链接基类之后。在您的问题中,答案是提到了两个基类和一个派生类。
相关文章:
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- "operator()"在重载运算符方法中是什么意思,在priority_queue(STL)中用作C++中的比较器?
- 是什么让一些命名函数/运算符与众不同?
- C++,()运算符重载,它的工作是什么
- std::set<Key,Compare,Allocator>::find() 函数使用"<"运算符而不是"=="运算符背后的直觉是什么?
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- c++运算符重载-我实际返回的操作数类型是什么
- 这个typedef和转换运算符语法是什么意思
- _bstr_t::运算符=是什么意思?
- C++中的<<运算符是什么?
- "飞机"不提供下标运算符是什么意思"
- 开关语句中的逗号运算符是什么意思
- 类名中使用的范围解析运算符是什么意思
- 这个C++运算符是什么意思
- 我在GoingNative2012中看到的运算符" "是什么
- @ 运算符是什么?
- & 运算符是什么意思?
- ==<>运算符是什么意思?
- C++中的 <?= 运算符是什么
- C++ - 在 std::cin.getline() 中使用 'dot' 运算符是什么意思?