C++中namespace与using

namespace关键字

namespace的出现是为了解决命名冲突的问题,名称(name)可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大,名称互相冲突性的可能性越大。另外使用多个厂商的类库时,也可能导致名称冲突。为了避免在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入关键字namespace(命名空间/名字空间/名称空间),可以更好地控制标识符的作用域。

namespace的语法

(namespace只能在全局作用域中定义,在函数内、类内、结构体内等处定义是不对的)

namespace zhang{
	//内容
}

namespace的用法

1.引用变量。

2.引用函数。

3.引用类、结构体。

4.namespace中可以嵌套定义namespace。

5.函数可以分离实现。

6.namespace是开放的,可以随时把新的成员加入已有的命名空间中。

例子

#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
namespace xi{
	int atc = 200;
	void test1(){
		cout << "test1在执行" << endl;
	}
	void test2();
	class Person{
		public :
			Person(){
				cout << "Person类" << endl;
			}
	};
	namespace feng{
		int def = 300;
	}
}
void xi::test2(){
	cout << "test2在执行" << endl;
}
namespace xi{
	int time = 20;
}
int main(){
	xi::Person p;
	xi::test1();
    xi::test2();
	cout << "atc=" << xi::atc << endl;
    cout << "def=" << xi::feng::def << endl;
    cout << "time=" << xi::time << endl;
	system("pause");
	return EXIT_SUCCESS;
}

结果:证明结论正确

using关键字

using关键字可以使得namespace中存储的东西可用

示例:

#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
namespace xi{
	int atc = 200;
	int def = 300;
	void test1(){
		cout << "test1在执行" << endl;
	}
	void test2();
	class Person{
		public :
			Person(){
				cout << "Person类" << endl;
			}
	};
}
void xi::test2(){
	cout << "test2在执行" << endl;
}
namespace zhang{
	int atc = 20;
}
using namespace std;
using namespace zhang;
using namespace xi;
int main(){
	Person p;
        test2();
	cout << "xi::atc" << xi::atc << endl;
	system("pause");
	return EXIT_SUCCESS;
}

但是为什么引用atc变量时还是要加上xi::呢,是因为名为zhang和名为xi的命名空间中都有atc这个变量,此时需要指明引用的是哪个命名空间中的变量。(函数、类、结构体同理)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值