- 博客(22)
- 收藏
- 关注
原创 C++多态详解
特性重载(Overload)重写(Override)重定义 / 隐藏(Hide)是否发生继承关系否,通常在同一个类中是,派生类对基类虚函数的重新实现是,发生在派生类中是否函数名相同✅ 是✅ 是✅ 是参数列表❗不同(个数或类型不同)✅相同❗不同也可触发隐藏返回值类型可不同通常相同(支持协变返回类型)可不同是否必须是虚函数否✅ 是(基类中必须是virtual否(可是虚函数,也可以不是)与虚函数表关系无关✅ 修改虚函数表(vtable),支持运行时多态。
2025-05-06 11:30:05
1051
原创 C++继承基础总结
派生类可以重新定义(重写)基类中的成员函数,这与多态中的虚函数覆盖不同。当派生类定义了与基类同名的函数时,基类的函数会被"隐藏"。class Basepublic:private:public:void show() //重定义基类中的成员函数//调用基类的show函数private:d.show();//调用派生类的show函数名称隐藏规则:派生类中的同名函数会隐藏基类中的所有同名函数,无论参数列表是否相同作用域解析访问:可以使用作用域解析运算符显式访问被隐藏的基类函数。
2025-05-03 21:55:58
949
原创 C++类模板详解
当在类外定义成员函数时,需要在每个函数前添加模板声明public:private:T _value;// 类外定义成员函数四、类模板特化模板特化允许为特定类型提供自定义实现。
2025-05-02 21:54:33
277
原创 C++中string类的模拟实现(常用接口)
通过实现类,可以帮助我们深入了解了字符串处理和内存管理的基本原理。这个实现虽然简化了一些细节,但涵盖了string类的核心功能和设计思想。在实际的生产环境中,我们通常会使用标准库提供的,因为它经过了充分的测试和优化。但是,理解其内部实现对于编写高效、健壮的C++代码至关重要。希望这篇文章能帮助你更好地理解C++中字符串的工作原理,并在今后的编程中更加得心应手地使用它们。
2025-04-12 17:34:14
283
原创 c++一些基础语法解释
在c++中支持在函数定义或声明时给出参数的默认值,这里值得一提的是,在声明时给出了函数的默认值后,定义时无需再重复给出函数的默认值。参数的默认值可以全给或部分定义,但是当只给部分参数默认值时,缺省参数必须从右往左依次来给出,不能间隔。由于参数缺省的出现,c++得以支持函数重载,及多个函数的函数名相同,但形参不同(参数类型、顺序、个数不同)。注意若函数的函数名和形参相同,而返回值不同,是不构成函数重载的。2.2.2函数重载的原理c++中,一个程序运行需要经过一下四个阶段。
2025-03-31 17:42:03
235
原创 深度探讨程序运行的四大分区--从物理模型到实际应用
在运行个程序时,系统会自动为该程序分配唯一的内存四区,本文章主要从物理模型上帮助读者理解内存四区
2025-03-15 22:36:47
1011
原创 浅谈c++中四大区——全局区、代码区、栈区、堆区
在上面的程序中我们可以看到虽然局部变量local_p1和local_p2都存放着堆区的地址,但是由于local_p1和local_p2是存放在栈区的局部变量,出了函数体后就销毁,所以local_p1和local_p2本身的地址不相同,但他们所储存的堆区的地址是相同的,并且只要在程序中没有delete关键字就不会被销毁,这种开辟内存并不释放的行为称为内存泄漏,是一种极其危险的行为,因此现在的编译器都很智能,若是发现程序员不释放内存,会自动在程序结束时由操作系统回收,避免出现内存泄漏。
2024-07-17 12:24:27
360
原创 c语言数组名深度剖析
由于scanf是格式化将从控制台所读取到的数据附加到参数所指的位置,所以scanf最重要的事scanf()中的逗号后面要是一个正确的地址。而printf是格式化输出附加参数,所以printf更重要的是printf( )中的逗号后面是否是一个正确的参数。因为二维数组数组名代表第一行所有元素的地址,所以这里*arr得到的是第一行首元素的地址。因为一维数组数组名代表首元素地址,所以这里的*arr得到的这个一维数组的第一个元素,2.&数组名,这里的数组名表示整个数组,所以求出的是整个数组的地址。
2024-02-14 20:49:49
492
2
原创 如何输出一个矩阵的转置矩阵
若要输出对应矩阵的转置矩阵则思路非常简单,就是先将列输出,即将列固定,为外循环,行不断变化作为内循环。当我们输出三行四列矩阵一般都是先将行固定作为外循环,列不断变化,作为内循环。由此可见转置矩阵的实现方法非常简单,就是将行列循环语句交换条件,其他不变,下面我们有以三行四列矩阵作为例子。
2024-02-14 12:58:50
565
1
原创 杨辉三角的实现思路与方法
杨辉三角我们在初中都已经有所了解,这里就不再涉及杨辉三角相关规律介绍。这里我们主要了解如何通过编程实现输出杨辉三角。
2024-02-01 15:35:57
442
1
原创 内存相关函数及其模拟实现
我们在学习字符串相关函数时,对于那些库函数---strcmp、strcpy等等,我们发现非常好用,唯独不满在于其只适用字符串,下面我来为大家介绍一些与上面具有类似功能,并且适用于所有类型的数据---内存函数。
2024-01-29 20:15:04
854
原创 这里收集了一些有关于指针的习题,掌握这些习题有助于新手更深的了解指针
/ 补码:1111 1111 1111 1111 1111 1111 1111 1100。//a强制转化成整型后加一,就相当于在a地址上加一,就相当于将指针后移一个字节。// 由于%p以16进制打印地址,所以内存存的是什么它就将其视作地址打印出来。//p强制转换成无符号长整型(十进制的正数),加一相当于是整数加一。//因为p是int(*)[4]类型,所以p加一跳过跳过四个整形。//p是一个结构体指针,加一后跳过一个结构体大小(20字节)//p中存放着字符串首地址,则单独的p就是a的地址。
2024-01-18 20:42:58
349
1
原创 使用冒泡排序模拟库函数
源代码:i < width;i++)*e1 = *e2;*e2 = tem;e1++;e2++;int i = 0;int j = 0;for (i = 0;i < sz - 1;i++)for (j = 0;j++)int main()i < sz;i++)return 0;
2024-01-16 21:40:21
336
1
原创 快速排序库函数qsort使用方法
int cmp_int(const void* e1, const void* e2)//注意这里必须写成const void*类型,因为作者当初在设计时就。int cmp_name(const void* e1, const void* e2)//比较字符串方式的函数。int cmp_age(const void* e1, const void* e2)//比较整形方式函数。//(数组首地址,数组元素个数,一个元素大小,比较方式函数地址)
2024-01-16 20:13:53
399
1
原创 c语言初学者必会俩种排序方法--冒泡排序&&选择排序
为了迎合c语言中指针,本文章形参部分全部用指针方式来接收实参int i = 0;int j = 0;for (i = 0;i < 9;j < 9 - i;int j = 0;for (i = 0;i < 9;i++)j < 10;for (i = 0;i < 10;i++)
2024-01-14 20:33:37
369
1
原创 通过函数回调实现简单计算器功能
printf("退出计算器\n");printf("选择错误\n");printf("请输入要计算的两个数:->");printf("请选择:->");
2024-01-14 18:47:31
430
1
原创 C语言初学者必会的三种自定义函数求字符串长度
/未符合条件则调用自己,每调一次就加一次,//记字符个数,每循环一次就加一,直到循环结束。int my_strlen(char* str)//用指针来接收。int my_strlen(char* str)//用指针来接收。if (*str!= '\0')//递归结束条件。//(str+1)表示让指针移动到下一个位置。else//达到递归条件,递归结束返回0。
2024-01-09 19:32:01
524
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人