using--基础

using 关键字的作用

using声明---using declaration

就是声明一个已经存在的命名空间,命名空间成员,枚举,类成员对象等。

声明实现的原理

在 C++ 中,变量的声明并不等于变量的实现,变量声明只是告诉编译器该变量的名称、类型和作用域等信息。在程序编译的过程中,编译器只是为所声明的变量分配一些符号表中的空间,这个空间仅仅用于连接、重定位等编译过程中需要的信息。

在链接时,链接程序会根据符号表中保存的变量信息去查找具体的变量实现,如果找到了,将会把变量实现和符号表中的变量绑定在一起,最终生成可执行文件。如果链接程序没有找到变量的具体实现,将会出现链接错误。

本质上就是告诉编译器有这么一个东西存在。

using的几个作用

1,声明命名空间

声明一个命名空间之后就可以使用这个命名空间的所有成员。

2,声明命名空间中的成员

3,声明枚举

enum class test{
...
};
using enum test;

4,在派生类中声明基类成员

class A{
    public:
    struct m_a{};
};

class B:public A{
    public:
    using A::m_a;
};

5,别名

using的注意事项

1,using声明的类成员必须是一个类型,不能是一个变量对象;

#include 

class H{
    public:
    int h_a;
};

using--基础_第1张图片

2,using在任意处声明类的成员类型时,必须指定别名。

原因:

如果如同以下:

class A{
    public:
    struct m_a{};
    enum class m_e{};
};
using A::m_a;
using A::m_e;
m_a a1;
m_e e1;

m_a和m_e的作用域是限定在类A中的,如果如同以上的写法,那么m_a和m_e就脱离类A独自成立了,这是不对的。

using--基础_第2张图片

所以必须使用别名来表示声明m_a和m_e属于类A.

using--基础_第3张图片

链接

你可能感兴趣的:(jvm)