你能解释一下为什么这是不允许的吗,
#include <stdio.h>
class B {
private:
int a;
public:
int a;
};
int main() {
return 0;
}
这是什么时候?
#include <stdio.h>
class A {
public:
int a;
};
class B : public A{
private:
int a;
};
int main() {
return 0;
}
在这两种情况下,我们在 class B
中都有一个名为 a
的公共(public)变量和一个私有(private)变量。
现在编辑!
最佳答案
In both the cases, we have one public and one private variable named a in class B.
不,那不是真的。
在第一种情况下,您不能在同一范围内拥有两个同名的标识符。在第二种情况下,B::a
隐藏了 A::a
,要访问 A::a
,您必须完全限定姓名:
b.a = 10; // Error. You can't access a private member.
b.A::a = 10; // OK.
关于C++ 继承 : scoping and visibility of members,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3033593/