c++ 中的 namespace 用法 4000
2017-12-28 14:44
736 查看
多人代码的整合,namespace 还是非常有用的。可以很轻松的避免变量与函数一样的命名
1. namespace 在 单个头文件 中使用
下面给一个简单示例演示命名空间和自定义头文件的使用,代码如下:
compare.h:
compare.cpp:
test.cpp:
2. namespace 在源文件中使用
在这里继续演示一个完整的命名空间事例:
3. 同一个 namespace 在 多个头文件 中使用
3.1 头文件相互独立
a.h
a.cpp
b.h
b.cpp
main.cpp
总结: namespace 中的方法,会根据头文件中定义的去查找!!!
同理1: 仅仅只包含 b.h 头文件, hh::只会出现bprintf()
同理2:若包主文件含两个 头文件(a.h,b.h),则aprintf() 与 bprintf() 都会出现
3.2 头文件之间嵌套
a.h
a.cpp
b.h
b.cpp
3.2.1 主函数只用前半段(只包含最开始的.h文件)
main.cpp
总结: 若只包含最开始的.h文件,namespace找不到后边添加的成员!
3.2.2 主函数只用后半段(只包含最后的.h文件)
main.cpp
总结: 若只包含最后的.h文件,namespace可找到所有添加的成员!
3.3 总结
namespace可用的成员 都是根据头文件进行逐级向上查找的
第一部分参考: http://blog.csdn.net/u010142437/article/details/32332253
1. namespace 在 单个头文件 中使用
下面给一个简单示例演示命名空间和自定义头文件的使用,代码如下:
compare.h:
namespace compare{ double max(const double* data,int size); double min(const double* data,int size); }
compare.cpp:
#include "compare.h" double compare ::max(const double* data,int size){ double result=data[0]; for(int i=1;i<size;i++) if(result<data[i]) result=data[i]; return result; } double compare ::min(const double* data,int size){ double result=data[0]; for(int i=1;i<size;i++) if(result>data[i]) result=data[i]; return result; }
test.cpp:
#include <iostream> ' #include "compare.h" ' using compare::max; using compare::min; //可以用下面指令的代替上面的声明 // using namespace compare; using std::cout; using std::endl; int main(){ double data[]={1.2,3.3,5.4,2.6,4.7,6.8}; const int dataSize=sizeof data/sizeof data[0]; cout <<"Min double is "<<min(data ,dataSize)<<endl; cout<<"Max double is "<<max(data,dataSize)<<endl; return 0; }
2. namespace 在源文件中使用
在这里继续演示一个完整的命名空间事例:
#include <iostream> using namespace std ; namespace savitch1 { void greeting(); } namespace savitch2 { void greeting(); } void big_greeting(); int main() { { using namespace savitch2 ; //使用savictch2、std、全局三个命名空间 greeting(); } { using namespace savitch1 ; //使用savitch1、std、全局三个命名空间 greeting(); } big_greeting(); //使用了std和全局两个命名空间 return0 ; } namespace savitch1 { void greeting() { &nbnbsp; cout<<"Hellofromnamespacesavitch1.\n" ; } } namespace savitch2 { void greeting() { cout<<"Greetingsfromnamespacesavitch2.\n" ; } } void big_greeting() { cout<<"ABigGlobalHello!\n" ; }
3. 同一个 namespace 在 多个头文件 中使用
3.1 头文件相互独立
a.h
#include <iostream> namespace hh { void aprintf(int m,int n); }
a.cpp
#include <iostream> void hh::aprintf(int m,int n) { print("this is by a: m=%d,n=%d \n",m,n); }
b.h
#include <iostream> namespace hh { void bprintf(int m,int n); }
b.cpp
#include <iostream> void hh::bprintf(int m,int n) { print("this is by b: m=%d,n=%d \n",m,n); }
main.cpp
#include <iostream> #include"a.h" int main() { int m=10; int n=20; hh::aprintf(10,20); //这里仅仅有aprintf(),没有bprintf(),因为只包含了a.h头文件 return 0; }
总结: namespace 中的方法,会根据头文件中定义的去查找!!!
同理1: 仅仅只包含 b.h 头文件, hh::只会出现bprintf()
同理2:若包主文件含两个 头文件(a.h,b.h),则aprintf() 与 bprintf() 都会出现
3.2 头文件之间嵌套
a.h
#include <iostream> namespace hh { void aprintf(int m,int n); }
a.cpp
#include <iostream> void hh::aprintf(int m,int n) { print("this is by a: m=%d,n=%d \n",m,n); }
b.h
#include <iostream> #include"a.h" ///////( b.h 中引用了 a.h ) namespace hh { void bprintf( ); }
b.cpp
#include <iostream> void hh::bprintf() { int m = 200; int n = 300; hh::aprint(m,n); }
3.2.1 主函数只用前半段(只包含最开始的.h文件)
main.cpp
#include <iostream> #include"a.h" int main() { int m=10; int n=20; hh::aprintf(10,20); //这里仅仅有aprintf(),没有bprintf(),因为只包含了a.h头文件 return 0; }
总结: 若只包含最开始的.h文件,namespace找不到后边添加的成员!
3.2.2 主函数只用后半段(只包含最后的.h文件)
main.cpp
#include <iostream> #include"b.h" int main() { int m=10; int n=20; hh::aprintf(10,20); hh::bprintf(); //两个都成员都会找到!!!! return 0; }
总结: 若只包含最后的.h文件,namespace可找到所有添加的成员!
3.3 总结
namespace可用的成员 都是根据头文件进行逐级向上查找的
第一部分参考: http://blog.csdn.net/u010142437/article/details/32332253
相关文章推荐
- C++ namespace 的一种用法
- C++ using namespace std 用法深入解析
- c++中“计时器”、“sort”、“namespace”函数的用法
- C++ 之namespace常见用法
- C++中的namespace用法
- C++中namespace的用法
- C++ 命名空间namespace的各种用法
- C++学习之namespace的用法
- C++ namespace的用法
- c++中namespace的用法
- C++中namespace的用法
- namespace in c++用法详解
- C++ using namespace std 用法深入解析
- C++中的namespace用法
- c++ namespace简单用法
- C++中的namespace的用法
- C++ namespace的用法
- C++中namespace的用法
- (转载)C++ using namespace std 用法深入解析
- C++的namespace用法详解