C++编程(6)

N cstdio namespace std int printfconst char cstdioh

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 字冲突示例 //my.h char f(char); int f(int); class String{ /* … */ }; //you.h char f(char); double f(double); class String{ /* … */ }; 一般情况下,第三方很难 同时使用my.h和you.h 解决方法: namespace My{ char f(char); int f(int); class String{/*…*/}; } namespace You{ char f(char); double f(double); class String{/*…*/}; } 使用时: 1 My::f(char), You::f(double) 2 using My::f; using You::String; 3 using namespace My; 或者 using namespace You; Beijing University of Posts & Telecommunications Beijing [email protected] 8.2.5.1 无名名字空间 有时,将一组声明包在一个名字空间内部就 是为了避免可能的名字冲突 这样做的目的只是为了保持代码的局部性, 而不是为了给用户提供界面 此时,我们可以使用无名名字空间 Beijing University of Posts & Telecommunications Beijing [email protected] 无名名字空间示例 #include “header.h” namespace Mine{ int a; voif f(){/*…*/} int g(){/*…*/} } //使用无名名字空间 #include “header.h” namespace{ int a; voif f(){/*…*/} int g(){/*…*/} } 相当于: #include “header.h” namespace $$${ int a; voif f(){/*…*/} int g(){/*…*/} } using namespace $$$; //其中,$$$是在这个名字空间 //定义所在的作用域里具有唯一 //性的名字,在不同的编译单位 //里的无名名字空间也互不相同 //保证名称的私有性,避免冲突 Beijing University of Posts & Telecommunications Beijing [email protected] 8.2.6 名字查找 一个取T类型参数的函数常常与T类型本身定 义在同一个名字空间...
View Full Document

{[ snackBarMessage ]}

Ask a homework question - tutors are online