关于using namespace 的一些体会

//test.h
namespace myname
{
	typedef int cin ;
}

// fig19_01.cpp
// demonstrating string assignment and concatenation

#include 
//#include 
#include "test.h"
using namespace std;
using namespace myname;    //自己命名的一个空间

int main()
{
	//string s1( "cat" ), s2, s3;
	char *s1="cat", *s2, *s3;

	s2 = s1;
	s3 = s1;
	//s3.assign( s1 );
	std::cout<< "s1:" << s1 << "\ns2:" << s2 << "\ns3:" << s3 << endl;
	cout<< "this is a test, using namespace std "<> i;        //这样用就会产生错误   error C2872: 'cin' : ambiguous symbol
	std::cout << i;
	return 0;
}

名词空间namespace

1) namespace只能在全局范畴定义,但它们之间可以互相嵌套。

2) 在namespace定义的结尾,右大括号的后面不必要跟一个分号。

3) 一个namespace可以在多个头文件中用一个标识符来定义,就好象重复定义一个类一样。

4)一个namespace的名字可以用另一个名字来作它的别名,这样我们就不必敲打那些开发商提供的冗长的名字了。比如说namespace alex = ThisIsAelxLongNamespace;

5) 我们不能像类那样去创建一个名字空间的实例

1.每个编译单元可以有一个没有命名的名词空间。

//cu.cpp

namespace{

class object{}...

}

   2. 友元:可以在一个名字空间的类定义之内插入一个friend 声明,这个友元也属这个namespace

使用名词空间namespace

1.alex::Student::age=5;//象使用类一样使用namespace

2.使用using指令using namespace std;using namespace alex;using namespace chirs;

如果alex 和chirs都有一个love 函数的话,就会发生冲突,

3.使用using声明:

void func(){

using namespace alex;//using指令

using chris::love;//uisng声明

love();//chirs::love();

alex::love();//必须这么使用

}

using 和namespace都是C++的关键词。
std 是标准程序库所驻之命名空间(namespace)的名称。

如果使用Boost的库 ,那就写 using namespace boost;
如果使用C++ 标准库 那就写 using namespace std;

就是暴露std这个名字空间,你就可以调用std这个名字空间下的东西,包含在这个命名空间的所有类还有函数都可以使用了

一般的名字空间用法:
这样使用:

  namespace    sdm  
   {  
            int    temp;  
             ……  
   }   
那么你在一个文件中有三种用法:
1> using namespace sdm;
然后你就可以使用变量temp:
temp=9;
还可以使用sdm中的其他每一个成员。
2>using sdm::temp;
在这个文件中只能使用sdm中的temp这个变量。
3>你在使用时直接使用sdm::temp:
cout<使用其它的成员也这样调用。

哈哈 using namespace这个东西 我觉得涉及到一种组织学 就是怎么把一堆代码归在一起,把它们纳入一个space(空间);然后使用它们的时候,先要声明使用它所在的这个空间

比如A B两个班都有叫张三的人,你要使用A班的张三,必然要先指名是A班这个名字空间(namespace),然后你对张三的所有命令才能达到你的预想,不会叫错人 呵呵

感觉语言这东西,重名是最麻烦的,因为人类自身的限制,不能使用太复杂的来作为名字(变量名,函数名),所以很容易出现名字冲突,所以开发了名字空间这种机制来保证大家有足够的名字可以用 呵呵
具我的体会class(类)这种东西,也具有类似的作用,不同类的同名函数可以存在但不冲突,就是表现之一呀

namespace 就是一个名字的空间。是为了避免名字冲突而使用的。在不同的空间里可以使用同一个名字而不会引起名字冲突。
它的声明就像声明一个类一样。
例:

  namespace    A{  
      int    f(){……};  
      char    g(){……};  
       ……}   
在使用名字空间里函数的时候有几种方法:
1-就像声明一个类的成员函数一样,只是类名换成了空间名 A::f();
2-可以用using关键字 using namespace A; 这样以后的代码使用的就是名字空间A中的函数了。

 

转载于:https://my.oschina.net/delmore/blog/4775

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值