C++——using 关键字
using 在C++中的用途有很多,是非常就经典的关键字复用,它的作用大致可以分为三类:
- using 指令
- using 声明
- using 别名
1. using 指令
简单点说,using 指令只能作用于命名空间,引入命名空间中的名字。
2. using 声明
2.1 对命名空间成员的 using 声明
using std::string 和 using std::cout 都是对命名空间成员的 using 声明。using 声明讲另一命名空间的成员引入到当前命名空间或块作用域中。
上面的代码中,using std::string
这个声明在全局中,所以它的生命周期就是全局,由于没有使用 using 指令把 std 的命名空间包含进来,如果没有 using std::string
,在使用 string 时,都应该在 string 前面加上 std::,即 std::string,但有了 using std::string
之后,就可以直接使用 string 了。using std::cout
也同理,只不过它的生命周期就只在 main 函数中。
using 同样可以应用到我们自定义的命名空间中,如下例子。
原理跟上面是一样的。
2.2 类成员的 using 声明
2.2.1 在类定义中 using 声明可以将基类成员引入到派生类的定义中。
如果代码是这样的话,
#include <iostream>
struct X {
void f(int)const {
puts("X int");
}
};
struct Y :X {
};
int main() {
X x;
Y y;
x