家纺网站模板,怀柔成都网站建设,电子商务app有哪些,flash建网站教程1.什么是命名空间
在c中#xff0c;名称#xff08;name#xff09;可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大#xff0c;名称互相冲突性的可能性越大。另外使用多个厂商的类库时#xff0c;也可能导致名称冲突。为了避免#xff0c;在大规模程序…1.什么是命名空间
在c中名称name可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大名称互相冲突性的可能性越大。另外使用多个厂商的类库时也可能导致名称冲突。为了避免在大规模程序的设计中以及在程序员使用各种各样的C库时这些标识符的命名发生冲突标准C引入关键字namespace命名空间/名字空间/名称空间可以更好地控制标识符的作用域。
定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{}中即为命名空间的成员。注意一个命名空间就定义了一个新的作用域命名空间中的所有内容都局限于该命名空间中。2.命名空间的使用
比如
//定义命名空间且只能在全局范围内定义
namespace sss
{int a 10;float b 20.0;char d s;//命名空间可以嵌套namespace ssst{struct stu{char name;char age;char sex;char grades;};int Fun(int a){return ((a 0xaaaaaa) 1) ((a 0x555555) 1);}}
}//记住这里与结构体不同没有;
int main()
{int a 10;std::cout sss::a std::endl;//std标准库未展开std::cout sss::b std::endl;std::cout sss::d std::endl;std::cout sss::ssst::Fun(a) std::endl;return 0;
}
如果命名空间名字相同则这两个命名空间将会被合并。且命名空间只能在全局范围内定义命名空间可以嵌套。 3.命名空间的展开
这里以std标准库为列
//using namespace std;//全部展开即std标准库里面的所用东西被展开到全局域中成为全局变量不推荐
using std::cin;//半展即只展开经常用的
int main()
{int a 10;//cout a endl;//全展cin a;//半展cout a endl;//没有展开的无法使用return 0;
}
4.作用域的使用
加命名空间名称及作用域限定符使用using将命名空间中某个成员引入使用using namespace 命名空间名称 引入
第一种对应没有展开的需要使用作用域限定符“”第二种为部分展开的第三种为全部展开的不推荐使用
最后还有个小知识无名命名空间
无名命名空间意味着命名空间中的标识符只能在本文件内访问相当于给这个标识符加上了static使得其可以作为内部连接了解 namespace{int a 10;void func(){couthello namespaceendl;}
}
void test(){//只能在当前源文件直接访问a 或 funccouta aendl;func();
}