小工具知识网

当前位置: 首页 > 行业知识 > C++基础知识(六:继承)

行业知识

C++基础知识(六:继承)

2026-10-29 05:26:43 来源:互联网转载

首先我们应该知道C++的三大特性就是封装、继承和多态。

���篇文章将详细的讲解继承的作用和使用方法。

  • 继承

    一个类,继承另一个已有的类,创建的过程

    父类(基类)派生出子类(派生类)的过程

    继承提高了代码的复用性

    【1】继承的格式

    class 类名:父类名{};

    【2】继承的权限

    class 类名:继承的权限 父类名{};如果不写继承方式,默认是私有继承
    父类中的权限      public|private|protected  public|private|protected   public|private|protected              继承方式                 public                    private                   protected子类中的权限      public|不能访问|protected  private|不能访问|private    protected|不能访问|protected

    【3】继承时类中的特殊成员函数

    特殊的成员函数不会被继承

    构造函数:

    • 需要在子类中显性调用父类的构造函数(初始化列表中)(透传构造)
    • 透传构造
    • 继承构造
    • 委托构造

      需要在子类中显性调用父类构造函数的场合:

      父类中只有有参构造  ----->子类在创建类对象时,必须手动调用父类的构造函数

      #include using namespace std;class Father{public:    int age;    char c;    Father(int a,char c):age(a),c(c){cout     int high;public:    void show()    {        cout     //Child c1;  //error,因为父类只有有参构造,而子类中没有提供能够调用父类有参构造的构造函数,不能成功创建父类的空间    //Father f1;    c1.age;    cout public:    int age;    char c;//    Father(){cout cout cout cout private:    int high;    //父类中的public成员age,通过公有继承,仍然是public    using Father::age;   //把父类中公有继承下来的age成员,在子类中改成私有权限public:    void show()    {        cout     Child c1(10);    Child c2(20,'z');    Child c3 = c2;    //Father f1;    //c1.age;    cout     int *p;public:    F():p(new int){cout         delete p;        cout     int *p;public:    C():p(new int){cout         delete p;        cout     C *p1 = new C;    delete p1;   //空间释放时,会自动调用析构函数,无需手动调用    p1 = nullptr;    return 0;}public:    int *p;    F():p(new int){cout         delete p;        cout public:    int *p;    C():p(new int){cout         delete p;        cout     C *p1 = new C;    *(p1-p) = 90;    cout public:    void clean()    {        cout public:    void play()    {        cout         cout };int main(){    Home h1;    h1.play();    h1.Room::clean();    h1.BedRoom::clean();    return 0;}public:    int a;    //A(int a):a(a){cout public:    int c;    //B(int a,int c):A(a),c(c){cout public:    //C(int a):A(a){cout public:    //D(int a,int c):B(a,c),C(a),A(a){cout     D d1;    d1.B::a = 90;   //二义性,还可以直接通过中间子类访问,直接访问B中的a成员    //cout public:    int a;};class B:virtual public A{public:    int c;};class C:virtual public A{};class D:public B,public C{};int main(){    D d1;    d1.B::A::a = 90;    cout 

上一篇:dedecms本地怎么安装教程?

下一篇:内部网络域名解析错误怎么办