首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >前缀的双冒号"::“是什么意思?

前缀的双冒号"::“是什么意思?
EN

Stack Overflow用户
提问于 2010-11-25 00:24:25
回答 6查看 231.2K关注 0票数 466

我在一个类中找到了这行代码,我必须对其进行修改:

代码语言:javascript
复制
::Configuration * tmpCo = m_configurationDB;//pointer to current db

我不知道类名前面的双冒号到底是什么意思。否则,我会读到:将tmpCo声明为指向Configuration类的对象的指针……但是前缀的双冒号让我感到困惑。

我还发现:

代码语言:javascript
复制
typedef ::config::set ConfigSet;
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-25 00:27:38

这确保解析是从全局名称空间进行的,而不是从当前所在的名称空间开始。例如,如果您有两个名为Configuration的不同类:

代码语言:javascript
复制
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

票数 554
EN

Stack Overflow用户

发布于 2010-11-25 00:27:17

::操作符被称为作用域解析操作符,它就是这样做的,它解析作用域。因此,通过在类型名前加上这个前缀,它会告诉编译器在全局名称空间中查找该类型。

示例:

代码语言:javascript
复制
int count = 0;

int main(void) {
  int count = 0;
  ::count = 1;  // set global count to 1
  count = 2;    // set local count to 2
  return 0;
}
票数 215
EN

Stack Overflow用户

发布于 2010-11-25 00:29:02

::用于链接某些东西(变量、函数、类、类型定义函数等)添加到命名空间或类中。

如果在::之前没有左侧,那么它强调了您正在使用全局名称空间的事实。

例如:

::doMyGlobalFunction();

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4269034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档