【发布时间】:2010-08-02 14:04:35
【问题描述】:
看看这段代码:
#include <iostream>
using namespace std;
class A
{
private:
int privatefield;
protected:
int protectedfield;
public:
int publicfield;
};
class B: private A
{
private:
A a;
public:
void test()
{
cout << this->publicfield << this->protectedfield << endl;
}
void test2()
{
cout << a.publicfield << a.protectedfield << endl;
}
};
int main()
{
B b;
b.test();
b.test2();
return 0;
}
B 可以访问 this->protectedfield,但不能访问 a.protectedfield。为什么?然而 B 是 A 的子类。
【问题讨论】:
-
不,B 不是 A 的子类。如果您使用公共继承,它会是。
-
Here 解释了它的工作原理。
-
为什么?私有继承意味着所有继承的字段和方法都将变为私有,因此它们只能在派生类中访问。
-
+1,因为它看起来像一个初学者的问题,但是很多答案或cmets都是错误的。我做了一个测试:私有或公共继承没有区别。
标签: c++ access-modifiers