class Base
{
public:
void basemem();
protected:
int i;
private:
int j;
};
struct Public_derived : public Base
{
int use_base1(){return i}; //ok:i is protected , derived classes can access i
int use_base2(){return j}; //error: j is private
}
struct Protect_drived : protected Base
{
int use_base1(){return i}; //ok:可以访问受保护成员
int use_base2(){return j}; //error:不能访问基类的私有成员
}
struct Private_drived : private Base
{
int use_base1(){return i}; //ok:
int use_base2(){return j}; //error:不能访问基类的私有成员
}
void main()
{
Base oMyBase;
Public_derived oMyPublice;
Protect_derived oMyProtect;
Private_derived oMyPrivate;
oMyBase.basemem(); //ok
oMyPublic.basemem(); //ok
oMyProtect.basemem(); //error,对象不能访问受保护成员
oMyPrivate.basemem(); //error,对象不能访问私有成员
}
如果是公用继承,基类成员保持自己的访问级别:基类的public成员为派生类的public成员,基类的protected成员为派生类的protected成员。
如果是受保护继承,基类的public和protected成员在派生类中为protected成员。
如果是私有继承,基类的所有成员在派生类中为private成员。
具体请参看上面的例子。