C/C++入门
文章平均质量分 74
本专栏对C/C++的基础知识进行详细的讲解,提供学习。
街 三 仔
一个热爱编程的小工科男·阿里云专家博主
展开
-
【C++入门篇 - 5】:静态成员、单例模式、友元、常量成员
修饰普通函数,C语言中普通函数默认全局使用,加static修饰之后,该函数只能在当前文件中使用。静态成员,指的是在C++类中声明成员时,可以加上static关键字,这样声明的成员叫静态成员。常量成员,指的是在C++类中声明对象成员时可以加上const关键字,这样声明的成员叫常量成员。修饰类中函数成员,函数也是被所有对象共享,且在该函数中只能操作静态数据成员。通过语法来限定在该函数成员内是无法修改类中的数据成员。修饰块作用域变量,内存在全局数据区,使用在块内。修饰类中成员数据,所有对象共享该数据成员。原创 2023-03-28 20:04:04 · 14 阅读 · 0 评论 -
【C++入门篇 - 8】:多态
现在来观察以下代码:当更换pa指针的地址为b时,最终调用的fun还是A类中的fun函数。虚函数,存在于类中,通过virtual关键字修饰的函数。解决bug的方法:类中有虚函数,析构函数必须是虚析构。(构造、析构不会被继承,析构函数也会放到函数列表当中)访问方式:通过对象访问 或 通过对象地址访问。有时我们并不希望父类的某个函数在子类中被重写。父类的虚函数或纯虚函数在子类中依然是虚函数。:同一个接口,可能会对应不同的函数。以上代码出现错误,解决的方法:引入。纯虚函数,是虚函数,没有函数定义。原创 2023-04-08 14:07:56 · 11 阅读 · 0 评论 -
【C++入门篇 - 7】:继承
在构造D类时继承链里有虚基类,所以先构造虚基类A,构造B类时,继承链中有虚基类,先构造虚基类,但是在构造D类时已经构造了,所以这个virtual关键字就是告诉B、C类,A类已经被构造了。观察以上代码可知,D类继承于B、C类,而这两个类继承同样的A类,这样就构成了菱形继承。但是,因为B、C类都继承于A类,当给A类中的数据成员赋值时,会出现二义性问题。观察以上结果可知,B类继承A类时会增大内存,增大的内存即为A类的内存。答:在以上示例中,A类中的a成员为私有属性,将其改为。:如何在B类中访问A的数据成员?原创 2023-04-07 20:35:09 · 16 阅读 · 0 评论 -
【C++入门篇 - 6】:运算符重载
第一个const用来消除引用的弊端(引用有个弊端,在函数体内就可以修改它的值,根据+运算符的特性,不能修改其值,所以我们加上const)+运算符的特性:是双目运算符,两操作数操作完之后不改变任何一个操作数,把结果返回出去。类在已经实现且部分修改的情况下,需要进行运算符重载就可以通过友元的方式来进行重载。当在运算符重载里做两个数的相加,它不属于任何对象,就给它做成友元函数。本次示例是基于以上代码,对 前置++ 和 后置++ 运算符进行重载。:调用重载+运算符会发生值拷贝,基于本例,会拷贝八字节,所以使用。原创 2023-03-31 19:55:46 · 11 阅读 · 0 评论 -
【C++入门篇 - 4】:构造和析构
这时会看到有两个文件生成:class_one.h、class_one.cpp,class_one.h主要用来声明和定义函数,不写有内存的数据,class_one.cpp中写带内存的数据。主要的作用是在对象生命周期结束时,做一些清理工作,也可以将对象生命周期最后要做的事情写在析构函数中。没有写拷贝构造,系统会提供一个隐式的拷贝构造,该拷贝构造函数会把参数的数据全部拷贝一份到自己身上。构造函数,它是一种特殊的函数,主要用来在创建对象时初始化对象,即为对象的成员变量赋初始值。this指针指向调用者对象的首地址。原创 2023-03-24 19:26:40 · 5 阅读 · 0 评论 -
【C++入门篇 - 3】:面向对象
从关键字开始,到下一个关键字结束(或者花括号结束),都属于该关键字的控制范围。类是有数据加功能构成的,也就是变量和函数,把变量和函数绑定在一起。类是一种用户自定义数据类型,可以看作是c语言中结构体的升级版。:在类外不可以直接访问,继承的子类也不能调用,只能在类内访问。:在类外不能访问,只有继承的子类可以进行访问。在面向对象的类中,数据成员绝大部分情况是。分为三种:公有属性、保护属性、私有属性。,函数成员基本上是对数据的操作,一般是。:在类外或类内都可以直接访问。原创 2023-03-23 18:42:08 · 6 阅读 · 0 评论 -
【C++入门篇 - 2】:C到C++
内存膨胀:指的是代码区的代码变多,因为使用内联函数之后,那么这个函数的调用就不会在栈区申请内存来运行,也就是少了入栈出栈的时间,如果是一个普通函数在调用的时候会有入栈和出栈。顾名思义,在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用默认值,就无须指定该参数。正常调用函数的时候是通过函数名,即函数地址进行调用,而内联函数是通过将函数体替换掉了函数名。在C++中允许函数名相同,参数列表不同,这叫函数重载。函数重载指的是在同一个项目中定义的函数名字可以重复。1、引用是外号,不占内存。原创 2022-10-22 08:20:18 · 5 阅读 · 0 评论 -
【C++入门篇 - 1】:C++编程等演示环境介绍
VS下载官网一般我们下载社区版,下载好后进行安装,安装时选择与C++有关的内容进行安装,然后设置语言环境。原创 2022-10-05 09:34:30 · 7 阅读 · 0 评论 -
【C语言零基础入门篇 - 16】:栈和队列
队列有队首(front)和队尾(back),队首(front)指向队列的第一个数据,队尾(back)指向队列中的最后一个数据。栈只有一个开口,先进去的数据在栈底(bottom),后进来的元素在栈顶(top)。栈结构的数据操作只在栈顶。栈的特点:先进后出。例如:仓库进货、出货。什么是队列:功能受限的线性数据结构。什么是栈:功能受限的线性数据结构。队列的基本操作:增、删、改、查。栈的基本操作:增、删、改、查。原创 2022-10-17 21:57:53 · 27 阅读 · 0 评论 -
【C语言零基础入门篇 - 17】:排序算法
插入排序的规则是:第一轮开始时默认序列中第一个数据是有序的,之后各个数据以此为基准,判断是插入在此数据的前面还是后面,之后的数据依次向后移动,腾出位置,让数据插入,以此类推,直到整个序列有序为止。如果在一组需要排序的数据序列中,数据ki和kj的值相同,即ki= =kj,且在排序前ki在序列中的位置领先于kj,那么当排序后,如果ki和kj的相对前后次序保持不变,即ki仍然领先于kj,则称此类排序算法。递增排序(升序)后 0、1、2、3、4、5、6、7、8、9。原始数据:8、6、5、4、9、7、1、2、3。原创 2022-10-18 21:22:01 · 8 阅读 · 0 评论 -
【C语言零基础入门篇 - 15】:单链表
链表是数据结构中线性表的一种,其中的每个元素实际上是一个单独的结构体对象,而所有对象都通过每个元素中的指针链接在一起。什么是结点:链表中每个结构体对象叫做结点。什么是首元结点:其中第一个数据结点。什么是头结点:如果第一个结点不用于存储数据,只用于代表链表的起始点,则这个结点称为链表的头结点。原创 2022-10-16 20:20:22 · 39 阅读 · 0 评论