首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于命名空间的一个疑问解决方法

2012-04-19 
关于命名空间的一个疑问一般在程序开头写上#include iostreamusing namespace std就可以在程序里面直接

关于命名空间的一个疑问
一般在程序开头写上
#include <iostream>

using namespace std;
就可以在程序里面直接用cin和cout了
but
如果我在开头include了例外一个头文件<myheadfile>,在<myheadfile>的mystd名字空间里,我也有一个我自己写的cin和cout函数,如果要同时用到这两个不一样但名字相同的函数,那怎么办using namespace是不是不能用了(因为一旦用了,虽然可以直接在main里写cin,cout,但是系统不知道你要用的是哪个名字空间里的)是不是应该这么写,才能达到分清楚的目的?:
#include <iostream>
#include <myheadfile>

//using namespace std; 这两句话是不是已经可以不用了,因为用了会造成混乱?
//using namespace mystd;
int main()
{
  std::cout<<"it is from iostream"<<endl;
  mystd::cout<<"it is from mystd"<<endl;
  return 0;
}

先谢谢!

[解决办法]
可以用,但是不能不加限定的使用cout.
#include <iostream>
#include <myheadfile>

using namespace std; 这两句话是不是已经可以不用了,因为用了会造成混乱?
using namespace mystd;
int main()
{
std::cout<<"it is from iostream"<<endl;//可以
mystd::cout<<"it is from mystd"<<endl;//可以
cout<<"haha "<<endl;//不可以
return 0;
}

[解决办法]

探讨
一般在程序开头写上
#include <iostream>

using namespace std;
就可以在程序里面直接用cin和cout了
but
如果我在开头include了例外一个头文件<myheadfile>,在<myheadfile>的mystd名字空间里,我也有一个我自己写的cin和cout函数,如果要同时用到这两个不一样但名字相同的函数,那怎么办using names……

[解决办法]
正解,命名空间就是为了解决名字相同的冲突的,它让你给任何一个名字加了一个使用的空间域。控制名字域的使用范围可以用{}来限定。同样,使用多个域时要避免名字污染,就是楼上大神所说的。提一点,
C/C++ code
::name;//name是变量
[解决办法]
和楼主想的差不多,基本也正确了

只是如果要using其中一个也是行的

比如
using namespace mystd;
之后

std::cout必须显示声明名字空间
cout没名字空间版,自动解析成mystd::cout
[解决办法]
探讨

引用:
一般在程序开头写上
#include <iostream>

using namespace std;
就可以在程序里面直接用cin和cout了
but
如果我在开头include了例外一个头文件<myheadfile>,在<myheadfile>的mystd名字空间里,我也有一个我自己写的cin和cout函数,如果要同时用到这两个不一样但名字相同的函数,那怎……

[解决办法]
using namespace mystd
[解决办法]
用了就会有重定义
[解决办法]
探讨
引用:

可以用,但是不能不加限定的使用cout.
#include <iostream>
#include <myheadfile>

using namespace std; 这两句话是不是已经可以不用了,因为用了会造成混乱?
using namespace mystd;
int main()
{
std::cout<<"it is from iostrea……

[解决办法]
一句话,名字空间,就是让你省去写前缀的麻烦,但是,如果两个空间成员有冲突,编译器就不知道你用的哪个空间下面的成员了,和头文件也不能冲突

热点排行