C++ 三大属性之继承

作用

c++很重要的一个特征就是代码重用,而代码重用就是通过继承实现。

概念

子类是父类的一个子集,如下图关系

由图可知,院士是老师的子类,而基类的抽象程度最高,子类更加具体。

 

 

 

访问控制

取两者交集的较小者。

 

 

子类和父类的关系

  • 子类就是特殊的父类
  • 子类对象可以直接初始化父类对象
  • 子类可以当做父类使用
  • 子类拥有父类的成员变量和成员函数

构造和析构函数

构造函数执行顺序:子类对象在创建时会首先调用父类的构造函数,而后调用自己的构造函数,当父类的构造函数有参数时,需要在子类的初始化列表中显示调用。(设计原因:因为子类会用到父类的成员函数和成员变量,故而需要先初始化父类)

析构函数执行顺序:与构造函数相反,先调用子类后调用父类。(设计原因:先删除孩子节点而后一层层向上删除)

#include <iostream>
using namespace std;

class Person{
public:
    Person(){
        cout << "Person的构造函数" << endl;
    }
    ~Person()    {
        cout << "删除Person对象 " << endl;
    }
private:
    int name;

};
class Student:public Person{
public:
    Student(){
        cout << "Student的构造函数" << endl;
    }
    ~Student()    {
        cout << "删除Student对象 " << endl;
    }
private:
    int name;
    string no;
};

int main() {
    Student student;
    return 0;
}

结果

Person的构造函数
Student的构造函数
删除Student对象
删除Person对象

 

析构函数执行时间:参考https://www.cnblogs.com/AntonioSu/p/12269474.html

 

posted @ 2020-02-06 16:27  suwenyuan  阅读(320)  评论(0编辑  收藏  举报