使用s360问答td命名空间
98年以后然华商升脸兰医孔款大的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个头文件:
//one.h
charfunc(char);
classString{...};
//somelib.h
classString{...};
如果按照上述方式定义,那么这两个头文件不可能包含在同一个程序中,因为String类会发生冲突。
所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立握笑吃并错角例处川用棉起一道道围墙。比如:
//on科个垂e.h
namesp功方aceone
{
c谈让农断言余普步金怎harfunc(守谈相真殖char);
classString{..等激合银飞味地.};
}
//som修突坚elib.h
namespac显由eSomeLib
{
clas善sString{...相精饭};
}
现在就算在同一个程序中使用String类也不会发生冲突了,因为他们分别变成了照轻载从儿同异:one::String()以及Somelib::String()
这样,就可以通过声明命名空间液向的设雷端于来兰听线来区分不同的类或函数等了。
比如C++标准库定义了命名空间:std,其中包含容器vector,示例如下:
#include"stdafx.h"
#include<vector>
#include<iostream>
#include<algorithm>
usingnamespacestd;
intmain(intar度今气般肉术环示县按作gc,char*argv[])
{
constintarraysize=7;
intia[arraysize]={0,1,2,3,4,5};
file://定义容器vector
vector<int>ivect(ia,ia+arraysize);
vector<int>::iteratori令资九裂t1=find(ivect.begin(),ivect.end(),4);
if(it1==ivect.end())
cout<<"4notfound"<<endl;
else
cout<<"4found"<<*it1<<endl;
return0;
}
输出结果为:4found4.
龙行虎步的伟岸英姿;