笔记 - namespace

来源:互联网 发布:录音整理软件 编辑:程序博客网 时间:2024/05/16 19:10
#include<iostream>using namespace std;namespace ns1 {    void test()    {        cout<<"ns1::test()"<<endl;    }}namespace ns2 {    void test()    {        cout<<"ns2::test();"<<endl;    }}int main(){    ns1::test();    ns2::test();    return 0;}


  上面是一个namespace的示例。把同名的函数放在不同的命名空间内。



  命名空间不一定要一次写完,可以叠加。如下:

#include<iostream>using namespace std;namespace ns1 {    void test()    {        cout<<"ns1::test()"<<endl;    }}/*前面已经定义了 namespace ns1,所以这里会打开namespace ns1继续添加声明  */namespace ns1 {    void add()    {        cout<<"ns1::add()"<<endl;    }}int main(){    ns1::test();    ns1::add();    return 0;}




  可以这样写:

#include<iostream>using namespace std;//namespace的这部分(第一部分)定义库接口namespace ns1 {    int temp;    void test();    int max( int a, int b);}//namespace这部分(第二部分)定义了库实现namespace ns1 {    void test()    {        cout<<"test()"<<endl;    }    int max( int a, int b)    {        return (a > b) ? a : b;    }}int main(){    cout<<ns1::max(1,2);    return 0;}

  这样我们可以把第一部分放到一个头文件(.h)里面。第二部分放到源文件(.cpp)里面。



namespace也可以镶嵌:

#include<iostream>using namespace std;//namespace还能镶嵌namespace ns1 {    //第一个镶嵌域,定义库的matrix部分    namespace matrixLib {        int max( int a, int b);    }    //第二个镶嵌域,定义库的array部分    namespace arrayLib {        int arraySize();    }}int main(){    //调用方式    ns1::matrixLib::max();    ns1::arrayLib::arraySize();    return 0;}



/* 未完待续 */



原创粉丝点击