001-01 namespace命名空间

2018-08-25  本文已影响0人  有何不可12317

1 namespace 命名空间

1.1 历史

头文件中 C++ 标准对 ".h" 与 不带".h" 的区别 是为了兼容以前 C++ 代码 一个是为了支持新的标准

标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),为了更好地控制标识符的作用域。

1.2 C++ 命名空间定义及使用语法

std是 C++ 标准命名空间,C++ 标准程序库中的所有标识符都被定义在std中。

比如标准库中的类iostream、vector
等都定义在该命名空间中。

使用时要加上using声明

(using namespace std)

或using指示,如:

std::string
std::vector<int>

1.3 C 与 C++中的区别

1.4 定义 与 使用

定义

namespace name { ... }  // 定义

使用

using namespace name;   // 使用name命名空间
using name::varible;    // 使用name命名空间中的varible变量
::varible;              // 使用默认命名空间的varible变量

1.5 实例

namespace NameSpaceA
{
    int a = 0;
}

namespace NameSpaceB
{
    int a = 1;

    namespace NameSpaceC
    {
        struct Teacher
        {
            char name[10];
            int age;
        };
    }
}

int main()
{
    using namespace NameSpaceA;
    using NameSpaceB::NameSpaceC::Teacher;

    printf("a = %d\n", a);  // a = 0
    printf("a = %d\n", NameSpaceB::a);  // a = 1

    NameSpaceB::NameSpaceC::Teacher t2;
    Teacher t1 = {"aaa", 3};

    printf("t1.name = %s\n", t1.name); // name = aaa
    printf("t1.age = %d\n", t1.age); // age = 3

    return 0;
}

1.6 总结

上一篇 下一篇

猜你喜欢

热点阅读