C++ 中的 using 关键字有三种主要用途,核心都围绕着作用域控制。下面逐一介绍。

用途一:在子类中改变父类成员的访问权限

在继承体系中,可以通过 using 声明改变父类成员在子类中的访问权限。例如,父类 A 中的成员 x 声明为 protected,外部代码无法直接访问。如果希望在子类 B 中让 x 对外部可见,只需在 public 区域添加 using A::x,这样外部就能访问到该成员了。

用途二:使用别名

using 可以为 class 或 namespace 创建别名,效果类似于 typedef。例如:

用途三:在继承中突破名称隐藏

在继承体系中存在名称隐藏机制:当子类定义了与父类同名的函数时,父类的重载版本在子类中将不可见。通过 using 声明可以突破这一限制,将父类的重载函数重新引入子类的作用域,使其在子类中恢复可见。