我有两个课程如下:
class parent
{
public:
int a;
};
class child: public parent
{
public:
int a;
};
当这种继承发生时,子类隐藏了父类的变量a
,但是父类仍然可以使用范围解析运算符a
来访问parent::a
。为什么parent::a
无法避免?
有人可以告诉我为什么C ++在隐藏时不允许parent::a
被“避免”。我认为在子类中保留parent::a
会浪费内存。
答案 0 :(得分:3)
一般规则是,您可以在内部作用域中声明相同的名称,并隐藏任何其他作用域中的任何同名项。
课程没有特殊例外。