C++关于命名空间namespace的理解

一般使用

在C++中经常要用到标准库中的cout、cin和endl。一般有三种方法来引用:

  • 直接使用using namespace std语句
  • 使用std::前缀:
 std::cout 
 std::cin 
 std::endl
  • 有选择性地用using语句:
 using std::cout 
 using std::cin 
 using std::endl

这种语法的一般形式是:

using 前缀::符号;

有了这个语句,指定的符号可以随后不加std::前缀而被引用。

注意问题

一个复杂的程序可能会使用多个库,每个库都可以提供数百个类对象和函数名。名称冲突的可能性增加了。其解决办法是,然每个库创建自己的命名空间,要引用一个命名空间内的某个符号(也就是一个名字),必须使用前缀(如std,指C++标准库),或通过using语句来提供访问。

using namespace std;//使用一个叫std的命名空间

using namespace语句是访问库中所有符号的一种简便方法,危险的是,如果使用多个库,则对所有库中的所有命名空间采用using namespace非常容易造成名字冲突。
对于简单的程序,使用using namespace std 在大多数情况下不会出现问题(但名字冲突仍然会发生,所以一定要小心)。即使在编写短程序时非常方便,但也有可能成为一个坏习惯,所以建议使用有选择性的using:

using std::cout;
using std::cin;
using std::endl;

标准写法

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main(void) {
	cout << "Hello World!" << endl;
	return 0;
}

using作用域

还应当注意的是,using语句只在定义它的作用域中有效。

int main(void) {
	using namespace std;//只在main函数中有效,而在其他函数中不能直接访问std命名空间
	cout << "Hello World!" << endl;
	return 0;
}

创建自己的命名空间

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

namespace test {
	int a = 666;
	double b = 99.9;
}
int main(void) {
	using namespace std;//只在main函数中有效,而在其他函数中不能直接访问std命名空间
	cout << "Hello World!" << endl;
	cout << "a of test is :" << test::a << endl;
	cout << "b of test is :" <<test::b<< endl;
	using namespace test;//using namespace之后,可以直接访问
	cout << "b of test is :" << b << endl;
	return 0;
}
/*
结果:
Hello World!
a of test is :666
b of test is :99.9
b of test is :99.9
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SOC罗三炮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值