关于namespace

 namespace   是C++的一个关键字  。实际上,它只是起到标识作用,把全局的变量,函数,类等放到一起,细化管理。

并且namespace还可以嵌套定义。

#include<iostream> 
#include <stdio.h>
using   namespace   std; 
namespace   HelloWorld 

 namespace   Hello 
 { 
  void   foo(){   cout<<"Hello";   } 
 } 
 void   fooo(){   Hello::foo();   cout<<"   World!"<<endl;   } 

//using   namespace   HelloWorld; 

//void cout()
//{
// printf("%s\n","Right");
//}
void fooo()
{
 cout << "Can be Override" << endl;
}
void   main() 

 fooo(); 
 //cout();
}

上面的一段代码,如果不使用名字空间std,则找不到cout、cin、endl等标识符,因为这些标识符都是在命名空间std中定义的。使用using打开命名空间,是这个空间中的标识符在当前文件中可见。只有打开这个空间并且包含头文件iostream才可以使用cout等标识符。

为了验证,定义了命名空间HelloWorld,并嵌套定义了明明空间Hello。如果只是定义了HelloWorld而没有打开命名空间,则可以自己定义fooo函数,并可以在main函数中成功调用。如果打开了命名空间HelloWorld,则编译时候会报错,因为此时命名空间内部的fooo函数在这个文件中是可见的,如果又自定义一个fooo函数的话,就会造成名字的冲突,从而导致编译报错。

并且,如果没有打开命名空间std,即使包含了头文件iostream,还是可以自定义函数cout,也不会造成名字冲突。说明cout标识符存在于std空间中。在iostream中只是包含了cout的实现,而并没有包含cout标识符的定义(推测)。

此外命名空间中还可以包含类、变量等成员。

感觉命名空间的好处就在于,把标识符归类,在不同的命名空间中的标识符可以使同名的。如果不使用某一个命名空间的话,在写代码的时候就可以使用这个命名空间中某个标识符的名字进行程序标识符的命名。因为很多情况下回造成重名现象。使用命名空间就可以把不用的一些舍弃。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值