c++
文章平均质量分 95
lucas_dd
本科在读,C++Linux方向学习者
展开
-
万字长文带你了解多态的底层原理,这一篇就够了
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价重载两个函数在同一作用域。函数名相同、参数(个数/类型/顺序)不同。覆盖(重写)两个函数分别在基类和派生类的作用域。两个函数必须是虚函数。函数返回值、函数名、参数列表都必须相同(协变例外,返回值可以不同)。隐藏(重定义)两个函数分别在基类和派生类的作用域。函数名相同。...原创 2022-08-10 09:44:51 · 818 阅读 · 9 评论 -
C++中的继承原理,快来看看你有没有什么遗漏
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承也是一种复用,以前我们接触的复用都是函数复用,继承是类设计层次的复用。1.2 继承的定义继承的格式继承关系和访问限定符继承基类成员后的访问方式在继承后,父类成员继承到子类中,必然也需要有访问限定符,而访问限定符的变化们就是由在父类时的类型和继承方式决定。三、继原创 2022-08-03 21:30:56 · 814 阅读 · 5 评论 -
C++动态内存管理
C/C++ 的内存管理跟 JAVA 这些语言是不同的 —— JAVA 的程序不是直接跑在操作系统上的,JAVA 是在 JVM 虚拟机上运行。C/C++ 的程序是直接跑在 OS 上的,这也是为什么我们学习 C/C++ 要学习内存管理的原因,所以 C/C++ 的学习者需要对系统了解的更深。内核空间: 放置操作系统相关的代码和数据。(用户不能直接进行操作 ------ 可以通过调用系统提供的 api 函数)。栈:又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的 。内存映射段是高效的I/O映原创 2022-06-27 16:05:15 · 179 阅读 · 3 评论 -
类和对象(三)
C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型和参数列表与普通的函数类似。注意:为什么要进行运算符重载?运算符都是默认给内置变量类型用的,自定义类型想要使用就需要进行运算符重载。运算符重载的意思就是我们去写一个函数定义这里运算符行为。重载日期类的和运算符。赋值运算符(=)重载赋值运算符重载需要注意:const成员函数将const修饰的类成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函原创 2022-06-18 09:00:00 · 137 阅读 · 0 评论 -
类和对象(二)
如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数 。构造函数完成的是初始化工作,析构函数完成的是清理工作,拷贝构造就是拷贝,赋值重载也是拷贝,但是使用场景不一样,最后的取地址重载用的很少。构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次。构造函数是特殊的成员函数,需要注意的是,构造函数的虽然名称叫构造,但是需要注意的是原创 2022-06-12 19:45:33 · 116 阅读 · 0 评论 -
类和对象(一)
c语言是面向过程的语言,关注的是过程,分析出求解问题的步骤,通过函数调用来逐步解决问题。而c++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互来解决问题。在c++中就已经有类的雏形,就是结构体struct。在c语言中可以通过struct将很多变量放在同一个struct类型的变量中,在处理复杂问题时使用很方便,但是缺点就是不能定义函数,只可以定义变量。在c++中就引入类这个东西,类中既可以定义变量,也可以定义函数。但是在c++中,更喜欢用class来定义类。struct和cla原创 2022-06-01 10:12:43 · 101 阅读 · 0 评论