C++类的继承
继承的意义在于代码可以复用,在原有的基础上添加新功能就变成了新一代产品了(就像移动电话发展史一样,从大哥大到现在的智能手机,代代相传添砖加瓦,单车变摩托,平房变别墅。究其本质是不变的),继承也是为了多态服务的。
class的继承分为单继承,多继承,菱形继承,虚拟继承,菱形虚拟继承。
单继承:
单继承就是子类Derived(派生类)继承自一个基类Base (父类),其实就是子承父业。其在C++中的语法是:class Derived:[继承类型] Base
继承类型有:public,protect, private。单继承计算派生类大小方式是:sizeof(Base)+派生类新增成员的大小
这三种继承权限的区别是:
- public,以这种权限继承并没有改变基类的任何权限。
- protected,以它继承,基类的public权限将会被改变为protect。也就是说基类的成员只能在基类或派生类内部访问,不能在外部调用。protect与private在同一类中的作用是一样的(体现封装性),它们的区别是在继承中基类的protect成员可以在派生类中使用,而基类的private成员只能在基类中使用。
-
private,这种方式继承,基类的public,protect权限会被改为private,也就是说基类的所有权限都变成了私有,只能在其内部访问。
单继承例:class Base
{
public:
void SetValue(int pri, int pro, int pub)
void Show()
private:
int _pri;
protected:
int _pro;
public:
int _pub;
};
class Derived:public Base
{
public:
void SetDerived(int pri, int pro, int pub)
{
_pub = pub;
_pro = pro;
//_pri = pri; // 基类中私有的成员继承下来,不能访问
_pubD = pub;
_proD = pro;
_priD = pri;
}
private:
int _priD;
protected: