2022.01.19.继承
父类(基类)
class CFather{ public: int m_a; int m_money; /*CFather(){ m_a=30; m_money=100; }*/ CFather(int a,int b){ m_a=a; m_money=b; } ~CFather(){ cout<<"~CFather"<<endl; } };
子类(派生类):子类可以使用父类成员
class CSon:public CFather{ public: int m_son; int m_money; CSon():CFather(101,1000){ m_son=10; m_money=20; } ~CSon(){ cout<<"~CSon"<<endl; } };
定义子类成员,其中包含父类成员,先父类后子类
定义子类对象,执行构造顺序,先父类后子类,父类的默认无参的构造可以被编译器自动调用
如果父类中没有默认的无参构造,在子类参数列表中,手动调用父类带参数的构造
继承下,子类对象在生命周期结束时,回收额外的空间,调用析构顺序,仙子类后父类
类之间的关系:纵向关系,继承。
继承好处:将一些功能相似的类的公共成员,单独抽离出来,形成一个类
这个类就是父类,子类继承父类,包含了这些公共的成员,提高了程序代码的复用性,扩展性,后期更容易维护。
继承方式 描绘了父类的成员在子类
共有继承 public
父类 子类
public: public
protected: protected
private: 不可访问
保护继承 protected
父类 子类
public: protected
protected: protected
private: 不可访问
私有继承 private
父类 子类
public: private
protected: private
private: 不可访问
class CFather { public: int m_pub; protected: int m_pro; private: int m_pri; }; class CSon:public CFather{ public: void show_public(){ cout<<m_pub<<endl; } }; int main(){ CSon son; cout<<son.m_pub<<endl; //cout<<son.m_pro<<endl; system("pause"); return 0; }

浙公网安备 33010602011771号