- 博客(16)
- 收藏
- 关注
原创 C++入门篇——类和对象(下)
之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。class Datepublic://构造函数:_year(1), _day(1)private:int _year;int _month;int _day;return 0;
2025-05-11 21:34:48
889
原创 C++内存管理详解
new和delete是C++中用于动态管理内存的运算符//管理对象//管理对象数组int main()test1;return 0;具体分析如下:既然new和delete与C中动态内存管理差不多,那为什么还要设计这两个运算符呢?C++中引入了自定义类型,为自定义类型开辟空间也算实例化的一种,但使用malloc等函数无法在开辟内存时调用构造初始化,所以在C++中引入new和delete来动态管理自定义类型空间。
2025-05-11 21:34:33
643
原创 C++类和对象详解(中续)
运算符重载的设计依旧是为了完善自定义类型的功能,对于内置类型(以整型为例),可以进行大小比较、四则运算等运算符的计算,但对于自定义类型要怎么比较大小呢?可以直接用默认运算符吗?显然是不能的。当运算符被⽤于类类型的对象时,C++语⾔允许我们通过运算符重载的形式指定新的含义。C++规定类类型对象使⽤运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错运算符重载是具有特殊名字的函数,他的名字是由operator和后⾯要定义的运算符共同构成。
2025-05-03 00:20:41
847
2
原创 C++类和对象详解(中)
类中的默认成员函数就是用户没有显示实现,编译器会⾃动⽣成的成员函数。⼀个类,在不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,后面两个了解下即可。其次在C++11后还增加了两个新的默认成员函数,这个我们在后面再分析。默认成员函数很重要,也⽐较复杂,我们要从两个⽅⾯去学习:(1)我们不写时,编译器默认⽣成的函数⾏为是什么,是否满⾜我们的需求。(2)编译器默认⽣成的函数不满⾜我们的需求,我们需要⾃⼰实现,那么如何⾃⼰实现?
2025-05-03 00:20:24
1009
1
原创 C++入门篇——引用详解
C++中引入的引用,顾名思义就是引用一个对象的名字,传递给另一对象名,也可理解为取别名。引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间, 它和它引⽤的变量共⽤同⼀块内存空间。抽象点就像⽔壶传中李逵,宋江叫"铁⽜",江湖上⼈称"⿊旋⻛";林冲,外号豹⼦头。都是同一对象,只是名称有所区别。这里的类型包括了所有之前学过的数据类型,像整型、指针类型、结构体类型等。但引用在定义时也需注意以下问题:1.引用的别名不能与引用对象相同。
2025-04-23 21:50:56
824
2
原创 C++类和对象详解(上)
inline是在C++中新引入的内联功能,由inline修饰的函数为内联函数,编译时C++编译器会在调⽤的地⽅展开内联函数,这样调⽤内联函数就不需要建⽴栈帧了,进而提⾼效率。通俗来讲就是函数像宏函数预处理一样展开函数,不会再像平常函数一样在栈区调用。但与宏函数不同的是,内联函数书写更为简单不易出错。以求和函数为例//宏函数定义//内联函数定义在定义宏函数时,除非经常刻意使用宏,那么很容易将宏函数写错,并且宏函数语法错误很少,项目中很难检测出来。而对于函数而言,则很少会出现这种情况。
2025-04-23 21:50:40
746
原创 C++入门篇(从C过渡C++)
定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下⾯的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响。
2025-04-19 09:47:14
922
原创 C语言初阶数据结构——栈和队列
对于栈的定义:需要数组来进行数据的储存,再联想动态顺序表的定义,还需要引入元素个数以及空间大小。int top;}Stack;介绍完队列的逻辑结构,下面就要讨论队列的物理结构。队列底层结构的选择同样即能使用数组也能使用链表。但使用数组的话,对队头数据进行操作时会涉及数组的重新排列,效率会比较低,因此下面将使用链表结点的方式实现队列相关功能。//定义队列结点}QueueNode;//定义队列}Queue;。
2025-04-19 09:46:48
584
原创 C语言初阶数据——单链表
链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表实质上也是一种线性表,不过与顺序表不同的是物理结构上并不一定是连续的。这里便要谈到链表的结构: 不妨将链表看作一辆火车,链表的每个数据就是车厢,并且每节车厢是彼此连接着的,从前一节车厢可以访问到下一节车厢,但是每节是互不影响的,一节车厢的删除与增加并不会影响其他车厢里的内容。接下来记住车厢的形状,让我们正式进入链表。在一个简单的链表中,我们的每个“车厢”需要包含需要储存的数据(data)以及链接下一节“
2025-04-06 23:13:18
771
原创 LeetCode第189题.轮转数组深度解析
大家好,今天小编给大家带来的是一道轮转数组的算法题,这道题也算我第一次深度思考算法题,因此想做做记录,后面也会继续分享遇到的些算法题。轮转数组原题链接。
2025-03-25 18:57:53
863
原创 C语言初阶数据结构——顺序表(Sequence List)
线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使 ⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...线性表的逻辑结构一定是线性的,即数据元素之间的抽象关系是连续的一条直线;而线性表的物理结构不一定是线性的,即在计算机内存中不一定是储存在连续的内存中。
2025-03-23 19:57:58
397
原创 C语言:字符函数与字符串函数
字符分类函数主要是判断字符所属的类型,使用该函数时需引用<ctype.h>头文件,属于函数判断的类型时会返回真,否则会返回假。其中具体库函数如下:可看出islower函数实际功能与if(c > ='a' && c <= 'z')类似。
2025-03-04 20:31:34
958
原创 C语言指针入门
C语言作为一种计算机语言,其本质是根据需要来运用计算机内存,代码运行的同时也是在调用计算机内存。内存在计算机中就像一个个小型单位,最小单位为bit(比特位),一个比特位可储存一个二进制数,之后满足每1024进1级单位依次为Byte(字节)、KB、MB、GB、TB、PB。而仅有内存是无法准确调用所需要的内存的,于是便有了地址,通过地址来指向每一区域内存,从而能更精确快速的访问调用所需的内存,从而地址起到了指向内存的作用,因此也被叫做指针。
2025-02-09 13:47:39
539
原创 C语言内置数据类型
C语言中内置数据类型大体可分为整形、浮点型、字符型三类,在C99标准后还引入了布尔类型。本文章将从每种数据类型的语法标准,使用,意义等方面详细分析。其中代码均以VS2022为参考。字符型数据在C语言中用char表示,占用内存为1个字节,在计算机中以ASCII值的形式储存,其中可显示字符如下表在C99标准中引入的布尔类型其主要为判断真假数据,即真(true)与假(false),使得C语言中有了更为标准的真假数据引用,当然其中假也可用0表示,真可用!0表示,0为假可看作底层逻辑,
2025-01-18 14:34:36
1029
原创 始于C的编程梦
我是一个双非本科地理信息科学专业的学生,浑浑噩噩中已经度过了大学第一个学期。作为非计算机类专业学生,在本学期中很庆幸能接触到C语言,发现了自己在编程方面的兴趣,也算是一种偶然的启蒙吧,由此有了深入学习编程的想法。
2025-01-13 10:55:17
353
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人