我在一个类中发现了这一行代码,我必须修改:
::Configuration * tmpCo = m_configurationDB;//pointer to current db
我不知道类名前的双冒号是什么意思。如果没有,我会读到:声明tmpCo作为类Configuration对象的指针…但是前面的双冒号把我弄糊涂了。
我还发现:
typedef ::config::set ConfigSet;
我在一个类中发现了这一行代码,我必须修改:
::Configuration * tmpCo = m_configurationDB;//pointer to current db
我不知道类名前的双冒号是什么意思。如果没有,我会读到:声明tmpCo作为类Configuration对象的指针…但是前面的双冒号把我弄糊涂了。
我还发现:
typedef ::config::set ConfigSet;
当前回答
::是范围解析操作符。它被用来指定某物的范围。
例如,::alone是全局作用域,在所有其他名称空间之外。
something::可以用以下任何一种方式来解释:
有些是一个命名空间(在全局作用域中,或者在当前作用域中的外部作用域中),东西是一个类型、一个函数、一个对象或一个嵌套的命名空间; Some是当前作用域中可用的类,thing是Some类的成员对象、函数或类型; 在类成员函数中,some可以是当前类型(或当前类型本身)的基类型,thing则是该类的一个成员,类型、函数或对象。
你也可以有嵌套作用域,比如在some::thing::bad中。在这里,每个名称可以是一个类型、一个对象或一个名称空间。另外,最后一个,不好,也可以是一个函数。其他函数则不能,因为函数不能公开其内部作用域内的任何内容。
所以,回到你的例子,::thing只能是全局作用域中的东西:类型、函数、对象或名称空间。
使用它的方式表明(在指针声明中使用)它是全局作用域中的类型。
我希望这个答案足够完整和正确,能够帮助您理解范围解析。
其他回答
::用于将某些东西(变量、函数、类、类型定义等)链接到名称空间或类。
如果在::之前没有左边,那么它强调了您正在使用全局名称空间的事实。
例如:
::d oMyGlobalFunction();
这确保解析是从全局名称空间进行的,而不是从您当前所在的名称空间开始。例如,如果你有两个不同的类叫做Configuration:
class Configuration; // class 1, in global namespace
namespace MyApp
{
class Configuration; // class 2, different from class 1
function blah()
{
// resolves to MyApp::Configuration, class 2
Configuration::doStuff(...)
// resolves to top-level Configuration, class 1
::Configuration::doStuff(...)
}
}
基本上,它允许您遍历全局名称空间,因为您的名称可能会被另一个名称空间(在本例中是MyApp)中的新定义所破坏。
::是范围解析操作符。它被用来指定某物的范围。
例如,::alone是全局作用域,在所有其他名称空间之外。
something::可以用以下任何一种方式来解释:
有些是一个命名空间(在全局作用域中,或者在当前作用域中的外部作用域中),东西是一个类型、一个函数、一个对象或一个嵌套的命名空间; Some是当前作用域中可用的类,thing是Some类的成员对象、函数或类型; 在类成员函数中,some可以是当前类型(或当前类型本身)的基类型,thing则是该类的一个成员,类型、函数或对象。
你也可以有嵌套作用域,比如在some::thing::bad中。在这里,每个名称可以是一个类型、一个对象或一个名称空间。另外,最后一个,不好,也可以是一个函数。其他函数则不能,因为函数不能公开其内部作用域内的任何内容。
所以,回到你的例子,::thing只能是全局作用域中的东西:类型、函数、对象或名称空间。
使用它的方式表明(在指针声明中使用)它是全局作用域中的类型。
我希望这个答案足够完整和正确,能够帮助您理解范围解析。
一个隐藏的全局名称可以使用作用域解析操作符引用:: 例如;
int x;
void f2()
{
int x = 1; // hide global x
::x = 2; // assign to global x
x = 2; // assign to local x
// ...
}
"::"表示范围解析运算符。 具有相同名称的函数/方法可以定义在两个不同的类中。要访问特定类的方法,使用范围解析运算符。