之前在c语言写学生管理系统时操作对象只是学生,对学生进行增删查改,若是想要定义老师的结构题又有很大的工作量,但是其中成员变量又有很多重复的,C++的继承可以很好的解决这种问题,继承分为私有保护和公有继承,一般私有继承和保护继承很少用到,所以大多是公有继承派生类分别继承基类的共有在派生类中也是共有,继承的保护在派生类中也是保护,但是继承的私类在派生类中不可见,但是可以用从基类继承到的函数来访问基类中的私有,class默认继承私有struct默认继承公有,
如图基类Person被派生类student公有继承。
一般来说派生类的数据字节数要长一些,而基类的要短一些,所以可以这样理解派生类对象可以赋给基类对象,因为可以充满基类,而反过来不行,积累的数据量太少不能充满派生类,同理派生类可以赋给基类的指针和引用,然而基类的指针可能可以赋给派生类,条件是这个积累的指针本身就指向派生类的对象。
1.继承中的作用域,若派生类中存在与基类的同名变量和函数,则派生类的同名变量会对基类的同名变量进行隐藏若不加作用域限定符只会优先访问派生类的成员变量,小提一下,函数重载只会出现在同一作用域中,这种不是同一作用域的同名函数叫函数的重定义。
初始化列表:有些成员变量在类中声明好后要初始化必须使用初始化列表,例如存在于静态区的常量,和引用,以及没有默认构造函数的自定义类型,因为常量在定义时就必须初始化,引用也必须在定义时有被引用的对象,自定义类型在使用时也必须初始化。
类在实例化时需要调用默认的构造函数,但是继承来的基类中的变量要初始化他用常规的初始化方法肯定是不行的,所以先得在初始化列表时调用基类的构造函数构造好以后再完成派生类的构造
初始化列表基类时使用匿名初始化,可以根据需求灵活调用基类中的各种构造函数,拷贝就用拷贝,重载赋值运算符就用重载赋值运算符,
析构的话是先析构基类再析构派生类,要注意的是派生类的析构函数与积累的析构函数构成隐藏:
标签:初始化,13,继承,派生类,学习,作用域,基类,构造函数 From: https://www.cnblogs.com/qjwxlj/p/17316982.html