C++关键字-using
引入namespace
using namespace std;
将nampespace中单个名字注入到当前作用域
将其它 namespace 的成员引入本命名空间的 当前作用域 (包括其嵌套作用域) 。 一次只引入一个命名空间成员。
using std::map
map<int, int> m;
类型重定义
//等价: typedef void (*fun)(int, int);
using fun = void (*)(int, int);
//等价: typedef short int16
using int16 = short;
using MyVector = std::vector<T>;
//两者等价
std::vector<int> v1;
MyVector<int> v2;
改变派生类对父类成员的访问控制
尽管 Derived 对 base 是私有继承,但通过 using 声明,我们还是可以在 Derived 中访问其成员,且后续的继承同样不受 private 限定的影响。
class Base {
protected:
int bn1;
int bn2;
};
class Derived: private Base{
public:
using Base::bn1;
};
class DerivedAgain: public Derived{
};
int main(){
Derived d;
DerivedAgain da;
d.bn1 = 1;
d.bn2 = 2; //error, 'bn2' is a private member of 'Base'
da.bn1 = 3; //ok
std::cout<<d.bn1<<std::endl;
return 0;
}