c++ - 命名空间语法 "::Foo"

标签 c++ syntax namespaces

当双冒号“::”前没有附加 namespace 时,此语法意味着什么?

假设我有一个 Foo 类。在代码的某处有类似::Foo 的内容。

最佳答案

它表示全局命名空间。

以这段代码为例

#include <iostream>

int x = 10;

namespace N
{
    int x = 20; // Or you could write int x = 10 + ::x;
}

int main()
{
    int x = 30;

    std::cout << ::x + N::x + x << std::endl;
} 

在这个声明中考虑到这一点

    std::cout << ::x + N::x + x << std::endl;

您可以编写 ::N::x 而不是 N::x 因为 namespace N 包含在全局 namespace 中。

关于c++ - 命名空间语法 "::Foo",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27195409/

相关文章:

C++ 嵌套 `namespace` `using` Name Lookup Order of Preference

r - 在 R 的命名空间中导入有什么好处?

c++ - 将真值表加载到二维 vector 中

c++ - 从 map 容器中查找第一个大于用户指定值的值

c++ - 具有源子目录的单个顶级 makefile

c++ - 头文件中的 "class example;"是什么意思?

c++ - 通过c/c++程序在linux中生成系统声音

c - 冒号在 C 函数中表示什么?

sql - 为什么 sqlite 会提示这段代码?

Python:使用命名空间解析 SVG/XML