名称隐藏(仅限 C++)
如果类名或枚举名在作用域内且未隐藏,那么它是 可视的。 类名或枚举名可以通过在嵌套声明式区域或派生类中显式声明该名称 (作为对象,函数或枚举符) 来隐藏。 类名或枚举名隐藏在对象,函数或枚举符名称可见的任何位置。 此过程称为 名称隐藏。
在成员函数定义中,局部名的声明会隐藏具有相同名称的类的成员的声明。 派生类中成员的声明将隐藏同名基类的成员的声明。
假设名称
x 是名称空间 A的成员,并且假设名称空间 A 的成员通过使用声明在名称空间 B 中可视。 名称空间 B 中名为 x 的对象的声明将隐藏 A::x。 以下示例对此进行了演示:#include <iostream>
#include <typeinfo>
using namespace std;
namespace A {
char x;
};
namespace B {
using namespace A;
int x;
};
int main() {
cout << typeid(B::x).name() << endl;
}请参阅以上示例的输出:int名称空间 B 中整数 x 的声明将隐藏使用声明引入的字符 x 。