自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 c++之旅第九弹——模版

原因:因为.cpp文件是会参与编译的,而类模板在写的时候没有已知类型,故写在.cpp文件中的类中函数定义无法参与编译,也就相当于没有函数定义了;也是正确的,因为显式指定类型后就生成了对应类型的实体函数,和普通函数一样,普通函数在编译器下可以进行可转换参数的转换,故此时也是正确的。(2)template的类型参数T可以直接表示指针类型,但这样使用时会增加使用数据的不便,因为每次使用数据时都必须解引用进行操作,相对于普通类型(如int)的直接使用方式更加繁琐,所以一般也不会这样进行类型参数的使用。

2024-04-11 14:11:28 801 41

原创 c++之旅第八弹——多态

使用虚函数继承时的注意事项:使用虚函数后的继承,如果派生类中有自己的虚函数(和基类的虚函数是非同名的)是会在继承的基类的虚函数表的基础上往后添加的,而且由于这个派生类新添加的虚函数是属于派生类的,所以基类是无法访问这个派生类中新添加的虚函数的;但是如果派生类中写有和基类的虚函数同名的函数时,这个函数是会替代虚函数表中的基类虚函数的(同名函数在基类必须有virtual关键字,在派生类中就是可有可无的),也就是在虚函数表进行修改,将基类的同名函数首地址改为派生类的同名函数首地址。也叫晚期联编或动态约束。

2024-03-23 10:14:33 895 60

原创 c++之旅第七弹——继承

(2)如果基类中某一成员是私有属性,那么无论使用那种继承方式,在派生类中也是无法进行直接访问的,要访问也只能通过公有接口来进行访问,如果类B继承类A时继承方式是私有,而基类A中成员的属性为公有,那么在派生类B中是可以进行基类A中该成员的访问的,而当派生类C继承B时使用任何继承方式都无法对基类A中的该成员进行访问,这是因为B继承A时使用私有继承方式,相当于A类是B类的私有属性成员。4.构造顺序:虚基类->基类->派生类,虚基类的无名对象是在继承的最终类对象中的最后部分的内存,且只有一份它的内存。

2024-03-17 11:04:48 1085 78

原创 c++之旅——第六弹

常量的初始化:在类中直接赋值,但是是新写法,在老版本的编译器中可能会报错,所以想使用另一种初始化方式:借鉴静态成员的初始化方式,我们在类外进行常量成员的初始化,但是这样写会报错,因为相当于在类中声明了一次常量成员,在类外初始化时相当于进行了第二次声明,这样就会报错。②因为成员初始化列表只能初始化类对象的数据成员,而对成员函数无法进行调用,而构造函数就可以在里面写上这个普通成员函数来进行调用,这一点是成员初始化列表所做不到的,但是成员初始化列表可以对构造函数进行调用。静态成员是在类的整个生命周期中存在的。

2024-03-12 12:42:25 991 54

原创 c++之旅——第五弹

(2)如果没有去书写拷贝构造,系统提供一个隐式的拷贝构造,可以理解为浅拷贝,浅拷贝只拷贝物理内存,不会拷贝逻辑内存,也就 是不会拷贝类中指针开辟的堆内存 如果类中的属性有指针,且会动态开辟,必须重写拷贝构造,去书写深拷贝(也就是自定义拷贝构造)//做在定义对象的时候想要做的事情,包括对数据成员赋值,当然构造函数除了对创建的对象进行初始化数据之外,还可以往里面写入类的成员函数的调用,用于在对象创建使就自动执行这个函数。它是一种特殊的函数,主要用来在创建类对象时初始化对象,即为对象的成员变量赋初始值。

2024-03-07 23:07:43 1206 33

原创 c++之旅——第四弹

(2),编译:生成.obj二进制目标文件(是源文件生成的,头文件不会生成,头文件对应的定义函数的源文件也是可以生成的),因为.obj文件有大小,头文件里面是类类型的定义和函数的声明,是没有大小的,所以不可以生成有内存的文件。首先提出问题,分析问题的处理流程,将大问题分解成小问题,如果小问题比较复杂,那么就继续的分解为更小的问题,然后解决这些一个一个的小问题来解决大问题,最后解决所有的问题(做好这一步,做下一步,直到做完所有)。(3)、结构体一般用于定义数据这样的类型,比如矩阵之类的(里面一般不定义函数);

2024-03-03 16:42:16 1354 31

原创 c++之旅——第三弹

解决同名实体的冲突问题,同名变量可以通过括号的作用域来确定使用的是哪一个变量,而函数和类型(比如自定义的结构体类型)则不可以通过作用域来进行区别,所以使用命名空间来区分。//不建议在命名空间中进行变量的定义,因为引用开放命名空间后可能会导致变量的重命名冲突问题,这样反而更不好管理代码 //空间成员一般有:函数声明,类型定义。(2)、命名空间可以在全局,也可以在局部(命名空间可以接受嵌套定义),但不能在函数内和类中定义!(2)作用域:函数体和命名空间这种用来区分管理的代码区域的就是作用域,后面不加分号。

2024-03-03 16:35:49 1045 15

原创 c++之旅——第二弹

realloc函数追加的内存不一定是和原来内存连续的,而有可能是逻辑上的连续,因为在使用完开始的内存后,后面的内存也可能会继续被其他代码使用。动态变化的二维数组首先想到的是往数组中括号内填入变量,通过改变变量的值实现动态变化,但填入变量是不支持的,所以想到二级指针。(2),记得在使用完指针开辟的内存后写delete释放内存,否则会造成内存泄漏,积累会导致堆区内存越来越小。堆区:用于动态内存的申请与释放,一般由程序员手动分配和释放,若程序员不释放,则程序结束时由操作系统回收。

2024-02-27 17:02:36 716 25

原创 c++之旅——第一弹

c++过渡

2024-02-25 17:47:56 516 16

原创 loadimage没有与参数列表匹配的重载函数时解决方式

easyx使用时常见的一个报错及其解决方式

2024-02-17 13:26:44 690 11

原创 栈和队列(思路及代码,以及优化方式)

数据结构是用来存储数据的方式,方式不同作用也不同,比如数组的话就是可以更方便快捷地查找和使用(因为有下标);这次要讲到的栈和队列也是两种数据结构,可以满足不同的需求。但是,在某些情况下,我们可能需要限制处理顺序,这就产生了栈和队列这两种功能受限的线性结构。main函数前面的代码还是一样,不过主函数里面代码变了,用栈来十进制转二进制。

2024-02-16 10:46:04 613 6

原创 基础排序算法和查找算法

思路:在执行寻找最大数的过程中,以上代码不断执行交换操作,直到最大值,那么最大值之前的交换都是无用功,这时我们就可以仅仅记住每一次的下标即可,并在没有遇到最大值时一直更新最大值的下标,一次执行交换操作即可,这样可以有效加快代码的运行效率,并且在执行仅有一次的交换操作时,如果最大的就是起始元素的话就没必要交换,这样可以进一步实现效率的提升。2.排序方式越稳定(当有两个数值大小相同时,当排完序后,两个数值的位置没有发生改变,即没有发生两个相等值的位置交换现象),耗时少,耗空间小,越好。

2024-02-14 19:35:04 649 4

原创 html知识总结·第二弹

在html中,单纯使用多个空格在一起,最后的效果是只会出现一个空格的效果,要实现多个空格的效果,需要使用空格的字符实体,即;·button按钮在刚开始写出的时候是没有任何提示文字的,这时候可以用value属性写在button标签内部,这是实现显示提示文字的属性,value标签也可以写在submit里,也可以实现提示文字的作用。通过左上原则,确定保留谁删除谁,保留左上的一致的内容,之后就给保留的单元格设置跨行合并(rowspan)或者跨列合并(colspan)

2024-02-11 20:43:15 708 2

原创 使用easyx图形库和c语言实现简单交互式游戏——快跑,我的球

利用这个小游戏可以巩固我们前面所学习的知识,使用easyx图形库可以使我们之前的终端输出变得更加有趣,我这里安装的是easyx大暑版(即最新版),大家可以到官网上下载,小游戏源代码就分享在这里了,大家有兴趣的话可以玩玩我的小游戏。其中红色小球是我们可以操作移动的小球,白色即为障碍小球。

2024-02-01 16:25:20 455 1

原创 指针详解及应用总结

1.指针常量:系统在编译时给变量分配的内存地址就称为此变量的“指针”,由于该内存空间为系统分配的,无法改变,故称之为指针常量,同理,数组的地址也是指针常量。(&a为整形变量a的取地址操作,利用此操作即为将变量a的地址赋值给指针变量p,利用p即可访问到变量a地址所存储的内容)&a[1]即为数组第二个元素的地址,数组元素的地址是相连的,在物理存储上数组开辟的空间是连续的。(1)概念:指针变量是一种存储变量地址的变量,和指针常量不同,指针变量存储的地址是可以改变的。一个变量的地址称为此变量的“指针”。

2024-01-31 18:25:24 1173

原创 C语言预处理知识(细致全面理解总结加实例)

定义无参宏的基本格式:#define 宏名 宏替换int main()return 0;最终输出结果是8而不是10,因为宏定义不会发生其他操作,此时即为不会加上()的意思,所以原表达式即为2+3*2另外,不能给用宏定义的常量赋值eg:A=33;//这就是错误的了定义带参宏的基本格式: #define 宏名(参数列表) 宏替换 带参宏可以像函数一样调用eg1:a:bint main()return 0;最终输出为6,即相当于调用了函数int main()

2024-01-29 00:23:32 1197 1

原创 C语言自定义数据类型部分(结构体,共用体,枚举)

自定义数据类型知识总结

2024-01-27 10:25:42 860 2

原创 前端伊始——初识HTML(精华总结)

当含有目标文件的文件夹和html文件在同一级时,可以先写出./表示当前级,写出含有目标文件的文件夹名加/找到目标文件。1.图片标签:img 其中的属性有:src:目标图片的路径 alt:图片加载不出来时的替换文本 title:鼠标悬停在图片上时出现的信息 width:加载图片的宽 height即高。s,del删除线(不要999,不要666,现在只要你们的关注,做电商那种类型的删除线效果)(1)绝对路径:网址全名,盘符开始的路径,根目录(ios)(1)标签的属性写在开始标签内部。

2024-01-26 18:46:15 410 2

原创 c语言笔记记录(开始到函数部分)

结果发现输入3时,最后输出还是3,因为传参过程相当于赋值,即int a(形参中的a)=a(输入值的a),最后将形参的a加一,然后函数结束将形参释放,而对于 实参的a未作出任何改变,所以输出实参a还是3.(即值复制后改变而非改变原值)在调函数时,我们将调用其他函数的函数称为主调函数,将被调用的函数称为被调函数。程序中所定义的局部变量默认是动态存储的。

2024-01-25 11:11:27 1172 1

原创 新的开始-万象初新的第一天

我对于未来的憧憬还是蛮多的,从一个刚踏入大学中连打字都不会的人(自己)到现在打字速度的逐步提升,我希望通过自己在此的纪录来看到我自己在技术领域的进步,也看到我能够攻坚克难的学习生涯-这何尝不是一件浪漫的事情。尽管现在就业形势一片红海,我仍然相信真正学到思维,学到知识和方法的人能够突破重围,因此,在此信念的坚守下,不妨将我的个人目标定得高远一些,这不是什么必须要达成的目标,但在现在的我看来,这就是我必须要完成的目标,以此作为我的指路明灯:目标IT公司是华为,字节,美团等大厂。

2023-11-25 16:52:51 547 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除