C++命名空间

-------siwuxie095

   

   

   

   

   

C++命名空间(namespace)

   

   

什么是命名空间:

简言之,就是为程序划片取名字

   

   

   

   

   

程序中的命名空间:

如:A 公司的程序库 与 B 公司的程序库(二者毫无联系),

都将卖给 C 公司

   

   

   

   

如果 C 软件公司购买了 A 公司和 B 公司的程序库,想使用

A 公司的变量 x 和 B 公司的函数 f1,怎么办?

〔 C 公司怎么办,A 公司和 B 公司如何写自己的代码,

所以 A 公司和 B 公司要使用命名空间 〕

 

   

(即 为什么要有命名空间)

   

   

   

解决方案:

使用命名空间 namespace

   

   

   

命名空间定义方法:

   

   

   

命名空间使用方法:

   

   

   

   

   

   

如:

   

#include<stdlib.h>

#include <iostream>

using namespace std;

   

namespace A

{

int x = 1;

void fun()

{

cout << "A" << endl;

}

}

   

namespace B

{

int x = 2;

void fun()

{

cout << "B" << endl;

}

void fun2()

{

cout << "2B" << endl;

}

}

   

using namespace B;

int main(void)

{

cout << A::x << endl;

B::fun();

fun2();

system("pause");

return 0;

}

//或者去掉 using namespace B; 与上面等价

//int main(void)

//{

// cout << A::x << endl;

// B::fun();

// B::fun2();

// system("pause");

// return 0;

//}

   

   

vs2013中:

   

   

   

   

   

   

或者:

   

//或者去掉 using namespace std; 与上面整体等价

#include "stdlib.h"

#include <iostream>

   

namespace A

{

int x = 1;

void fun()

{

std::cout << "A" << std::endl;

}

}

   

namespace B

{

int x = 2;

void fun()

{

std::cout << "B" << std::endl;

}

void fun2()

{

std::cout << "2B" << std::endl;

}

}

   

using namespace B;

int main(void)

{

std::cout << A::x << std::endl;

B::fun();

fun2();

system("pause");

return 0;

}

   

   

vs2013中:

   

   

   

   

   

   

   

   

再如:

   

#include<stdlib.h>

#include <iostream>

using namespace std;

   

namespace myNum //填写命名空间的关键字

{

int x = 105;

}

   

int main()

{

// 使用bool类型定义isOdd,作为状态位

bool isFlag = false;

   

if (myNum::x % 2 == 0)

{

//改变状态位的值,使其为false

isFlag = false;

}

else

{

//改变状态位的值,使其为true

isFlag = true;

}

// 判断状态位的值

if (isFlag)

{

// 如果状态位的值为true,则打印变量x是奇数

cout << myNum::x << "是奇数" << endl;

}

else

{

// 如果状态位的值为false,则打印变量x是偶数

cout << myNum::x << "是偶数" << endl;

}

system("pause");

return 0;

}

   

   

vs2013中:

   

   

   

   

   

   

   

【made by siwuxie095】

   

   

原文地址:https://www.cnblogs.com/siwuxie095/p/6388397.html