Посмотрите на этот код:общественности, защищенные, частные
#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 является подклассом А.
Нет, B не является подклассом A. Это было бы, если вы использовали публичное наследование. – 2010-08-02 14:07:00
[Здесь] (http://stackoverflow.com/questions/860339/difference-between-private-public-and-protected-inheritance-in-c/1372858#1372858) объясняет, как это работает. –
Почему? Частное наследование означает, что все унаследованные поля и методы станут частными, поэтому они будут доступны только в производном классе. – l245c4l