首页 > 代码库 > c++之命名空间namespace

c++之命名空间namespace

1命名空间解决全局变量的冲突

 1 main.h文件
 2 #pragma once
 3 // data命名空间的名称
 4 namespace data
 5 {
 6     int  num = 20;//外部全局变量冲突
 7 }
 8 
 9 
10 main.cpp
11 #include"main.h"
12 #include<iostream>
13 using namespace std;
14 
15 int num = 10;
16 
17 void main()
18 {
19     cout << num << endl;
20     cout << data::num << endl;//::域作用符 此处必须使用域作用符
21 
22     cin.get();
23 }

2命名空间没有私有,全部变量,函数都是公有,可以访问
using namespace data;//使用命名空间,直接访问当作全局变量
内层覆盖外层,
::num 直接访问全局变量,全局变量不存在就是0
使用命名空间必须在定义之后

#include<iostream>

using namespace std;

//命名空间没有私有,全部变量,函数都是公有,可以访问
//using namespace data;//使用命名空间,直接访问当作全局变量
//内层覆盖外层,
//::num 直接访问全局变量,全局变量不存在就是0
//使用命名空间必须在定义之后

namespace data
{
    int num;

    void show()
    {
        cout << num << endl;
    }

}
using namespace data;//使用命名空间,直接访问当作全局变量


//内层覆盖外层,
namespace dataX
{
    int num=100;
    namespace run
    {
        int num = 10;
        void show()
        {
            //::num 直接访问全局变量,全局变量不存在就是0
            cout << dataX::num << endl;
        }

    }

}
using namespace dataX;//使用命名空间必须在定义之后

void main()
{
    dataX::run::show();

    cin.get();
}
void main1x()
{

    data::num = 10;
    show();

    cin.get();
}

3命名空间的使用

 1 #include<iostream>
 2 #include<cstdlib>
 3 using namespace std;
 4 
 5 
 6 namespace  string1
 7 {
 8     char str[10]{ "calc" };
 9 }
10 namespace  string2
11 {
12     char str[10]{ "notepad" };
13 }
14 //命名空间拓展,名称相同,同一个命名空间
15 //瀑布式开发
16 namespace  string2
17 {
18     char cmd[10]{ "notepad" };
19     void show()
20     {
21         cout << str << endl;
22     }
23 }
24 
25 //命名空间,可以无限嵌套
26 namespace run
27 {
28     namespace runit
29     {
30         namespace runitout
31         {
32             int num = 100;
33             void show()
34             {
35                 cout << num << endl;
36             }
37         }
38     }
39 
40 }
41 
42 
43 void main()
44 {
45     //system(string2::str);
46     //string2::show();//命名空间的函数与变量
47     run::runit::runitout::num = 199;
48     run::runit::runitout::show();
49 
50 
51 
52     system("pause");
53 }

4匿名命名空间

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 
 6 //匿名命名空间等同全局变量
 7 namespace
 8 {
 9     int x = 10;
10 }
11 
12 
13 void main()
14 {
15     x = 3;
16     cout << x << endl;
17 
18 
19     cin.get();
20 
21 }

 

c++之命名空间namespace