美文网首页
15-命名空间

15-命名空间

作者: _东阁堂主_ | 来源:发表于2019-02-19 11:19 被阅读2次

写在前面

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

相关文章

  • 15-命名空间

    写在前面 名词解释 码上建功 命名空间的嵌套 分离的文件也支持命名空间 命名空间的合并 完整代码demo,请移步G...

  • Hbase 查询语句

    进入HBase数据库 HBase帮助命令: 命名空间 列出所有命名空间 新建命名空间 删除命名空间 该命名空间必须...

  • NDK开发:C++基础

    一、命名空间 standard:标准命名空间 命名空间类似于java中的包。 自定义命名空间 使用命名空间 ::为...

  • Chapter 18 Large-scale project t

    命名空间 inline命名空间 inline声明的命名空间, 可以无视本层命名空间, 而可以被直接使用. 用处: ...

  • C#随笔1

    1命名空间 语法 namespace 命名空间名称{若干个类型} ORnamespace 命名空间名称.子命名...

  • 07_Python函数进阶_全栈开发学习笔记

    # 1. 命名空间 ## 1.1 命名空间的种类 命名空间共有有三种 1) 内置命名空间 —— python解释器...

  • C++入门05 --命名空间,继承,访问权限,初始化列表

    命名空间 命名空间主要是用来解决命名冲突的; namespace xxxx { }:命名空间的定义; 利用::域运...

  • 命名空间 namespace

    /*命名空间:命名空间是一种封装事物的方法命名空间怎么声明?关键字: namespace 导入命名空间: use起...

  • chapter18_命名空间

    命令空间 每个命名空间都是一个作用域位于该命名空间之外的代码必须明确指出所用的名字属于哪个命名空间 命名空间可以是...

  • kubernetes-RBAC实操

    环境准备准备test的命名空间test命名空间下创建serviceaccounttest命名空间下创建rolete...

网友评论

      本文标题:15-命名空间

      本文链接:https://www.haomeiwen.com/subject/glexyqtx.html