使用“:: member”引用全局命名空间有什么用处吗?

问题描述 投票:0回答:1

在C ++中,名称空间myNamespace的成员可以引用为myNamespace::member

但是,显然存在类似于上面引用全局命名空间的语法 - 简单地说::member。考虑:

int foo() {
    return 4;
}

::foo(); // What is the difference between
foo();   // these two lines?

简而言之,在这种情况下使用foo();::foo();之间是否存在功能差异,还是它们完全相同?

c++ namespaces
1个回答
1
投票

示例代码:

#include <iostream>

void foo() {
  std::cout << 1;
}

namespace my_ns
{
  void foo() {
    std::cout << 2;
  }

  void goo1() {
    ::foo();
  }
  void goo2() {
    foo();
  }
}

int main(int c, char** args) {
  my_ns::goo1();
  my_ns::goo2();
  return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.