4月13日继承学习

Posted on   玄灵镜  阅读(10)  评论(0编辑  收藏  举报

 

之前在c语言写学生管理系统时操作对象只是学生,对学生进行增删查改,若是想要定义老师的结构题又有很大的工作量,但是其中成员变量又有很多重复的,C++的继承可以很好的解决这种问题,继承分为私有保护和公有继承,一般私有继承和保护继承很少用到,所以大多是公有继承派生类分别继承基类的共有在派生类中也是共有,继承的保护在派生类中也是保护,但是继承的私类在派生类中不可见,但是可以用从基类继承到的函数来访问基类中的私有,class默认继承私有struct默认继承公有,

如图基类Person被派生类student公有继承。

一般来说派生类的数据字节数要长一些,而基类的要短一些,所以可以这样理解派生类对象可以赋给基类对象,因为可以充满基类,而反过来不行,积累的数据量太少不能充满派生类,同理派生类可以赋给基类的指针和引用,然而基类的指针可能可以赋给派生类,条件是这个积累的指针本身就指向派生类的对象。

1.继承中的作用域,若派生类中存在与基类的同名变量和函数,则派生类的同名变量会对基类的同名变量进行隐藏若不加作用域限定符只会优先访问派生类的成员变量,小提一下,函数重载只会出现在同一作用域中,这种不是同一作用域的同名函数叫函数的重定义。

初始化列表:有些成员变量在类中声明好后要初始化必须使用初始化列表,例如存在于静态区的常量,和引用,以及没有默认构造函数的自定义类型,因为常量在定义时就必须初始化,引用也必须在定义时有被引用的对象,自定义类型在使用时也必须初始化。

类在实例化时需要调用默认的构造函数,但是继承来的基类中的变量要初始化他用常规的初始化方法肯定是不行的,所以先得在初始化列表时调用基类的构造函数构造好以后再完成派生类的构造

初始化列表基类时使用匿名初始化,可以根据需求灵活调用基类中的各种构造函数,拷贝就用拷贝,重载赋值运算符就用重载赋值运算符,

析构的话是先析构基类再析构派生类,要注意的是派生类的析构函数与积累的析构函数构成隐藏:

可以看出构造函数的顺序是先构造基类再构造派生类,而析构函数的顺序是先析构派生类再析构基类

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通

随笔 - 53, 文章 - 0, 评论 - 0, 阅读 - 1861

Copyright © 2025 玄灵镜
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示