15-命名空间

写在前面

namespace 在之前见到过这个名词

名词解释

命名空间:实际上就是一个由程序设计者命名的内存区域,
程序设计者可以根据需要指定一些有名字的空间域,
把一些全局实体分别放在各个命名空间中,
从而与其他全局实体分隔开来。 

码上建功

1,如何使用
namespace NP {
    int g_no;

    class Person {
    public:
        int m_age;
    };
    void test() {
        cout << "NP::test()" << endl;
    }
}

namespace DD {
    int g_no;

    class Person {
    public:
        int m_height;
    };

    void test() {
        cout << "DD::test()" << endl;
    }
}

如上面两个命名空间 NP DD
都有属性g_no,但是使用的时候相互不影响

谁的命名空间,然后跟着:: 两个冒号,跟着属性或是方法
NP::g_no = 1;
DD::g_no = 2;

NP::Person *p1 = new NP::Person();
p1->m_age = 10;

DD::Person *p2 = new DD::Person();
p2->m_height = 180;

NP::test();
DD::test();

看下打印结果:
test()
NP::test()
DD::test()
简单的使用就是这么简单

命名空间的嵌套

命名空间也可以嵌套
namespace DD {
    namespace SS {
        int g_no;
        class Person {
        };
        void test() {
        }
    }
    void test() {
    }
}

// 默认的命名空间,没有名字
::DD::SS::g_no = 30;
cout << "::DD::SS::g_no--" << ::DD::SS::g_no << endl;
DD::SS::g_no = 20;
cout << "DD::SS::g_no--" << DD::SS::g_no << endl;
using namespace DD;
SS::g_no = 30;
cout << "SS::g_no--" << SS::g_no << endl;
using namespace DD::SS;
g_no = 10;
cout << "g_no--" << g_no << endl;

打印结果:
::DD::SS::g_no--30
DD::SS::g_no--20
SS::g_no--30
g_no--10

分离的文件也支持命名空间

有个默认的全局命名空间,我们创建的命名空间默认都嵌套在它里面

创建两个命名空间
namespace DD {
    Car::Car() {
         cout << "DD::Car()" << endl;
    }
    
    Car::~Car() {
         cout << "DD::~Car()" << endl;
    }
}


namespace DD {
    Person::Person() {
         cout << "DD::Person()" << endl;
    }
    
    Person::~Person() {
         cout << "DD::Person()" << endl;
    }
}

调用
DD::Car car;
DD::Person person;
打印结果
DD::Car()
DD::Person()

命名空间的合并

namespace DD {
    int g_no;
}
namespace DD {
    int g_height;
}
DD::g_no = 10;
cout << "DD::g_no--" << DD::g_no << endl;
DD::g_height = 20;
cout << "DD::g_height--" << DD::g_height << endl;
打印结果
DD::g_no--10
DD::g_height--20

namespace DD {
    int g_no;
    int g_height;
}
DD::g_no = 10;
cout << "DD::g_no--" << DD::g_no << endl;
DD::g_height = 20;
cout << "DD::g_height--" << DD::g_height << endl;
打印结果
DD::g_no--10
DD::g_height--20
所以上述两个是一样的结果,是等价的

完整代码demo,请移步GitHub:DDGLearningCpp

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第三十七天反思: 正常情况下,老师这个职业的人一定特别爱说话,因为老师就是考说话赚钱谋生的。可实际情况是什么呢? ...
    lv老师lv阅读 309评论 1 4
  • 最近脾气很是爆,一点就着,完全没有生完五月坐月子时的耐心。强烈的谴责自己,脾气却控制不住。所以决定多读书喽。做一个...
    煜佳_6d06阅读 232评论 0 0