一直对这三个理得继承有点懵,我今天又重新理解了一次,终于搞懂了。
#基类定义形式
class A
{
public: //基类A的公有成员
protected: //基类A的受保护成员,派生类可继承
private: //基类A的私有成员,基类A及友元函数外不可访问和甚至查看
}
/*
class A
{
int a //不指定成员属性默认为private成员。
}
*/
//派生类public继承形式
class B : public A //类B为基类A的派生类,以public形式继承基类A
{
public: //派生类B的公有成员
//基类成员属性是什么在派生类中就是什么
//基类A的public成员在派生类B中就是public、protected成员就是protected、private就是private。
//在派生类B中唯独不可直接访问基类A的private成员。
protected: //派生类B的受保护成员,在派生类中几乎不使用
private: //派生类B的私有成员,在派生类中几乎不使用
}
//派生类B外不能直接访问基类A的protected成员和private成员
//protected继承形式
class B : protected A //
{
public: //派生类B的公有成员
//只有基类A中的public成员在派生类B中变成了protected成员,其它成员属性不变。
//派生类B不能直接访问基类A的private成员,其它成员都能访问
}
//派生类B外不能直接访问基类A的public成员、protected成员和private成员
//这里特殊的是,由于基类A中的public成员在派生类B中变成了protected成员所以,原基类A中的public成员在派生类外也不能访问了。
//private继承形式
class B : private A //
{
public: //派生类B的公有成员
//基类A中的public成员和protected成员,在派生类B都变成了private成员
//派生类B不能直接访问基类A的private成员,其它成员都能访问。
}
//派生类B外不能直接访问基类A的public成员、protected成员和private成员
/*
class B : A //也可这样写,如果不填继承形式默认为private
{
public:
}
*/
附上个别人整理的总结