自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝桥云课——递归题

该题属于较为基础的递归题,在使用递归解题的时候,要注意递归的停止条件,以及题目要求的内容。

2024-11-30 22:01:30 194

原创 限和最长子序列

在这里描述函数接口。例如: int fun(int* A, int N,int S);

2024-09-22 23:07:14 447

原创 PTA_7—3一帮一

一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的学生分为一组。

2024-09-15 18:47:52 457

原创 多态的概述与应用

在编译阶段,当编译器发现父类中有虚函数时,会在父类中创建一个虚函数表,这是一个指针数组,用来存储虚函数的地址。并且该数组放在只读段,还会创建一个虚指针,用来指向虚函数表,当要调用虚函数的时候,先解引用虚值针,找到虚函数表,然后再然后根据函数调用的类型,从虚函数表中获取相应的函数地址,程序跳转到函数地址处执行实际的代码。虚函数在父类中写完之后,一旦在子类中检测到同名函数,那么在子类中的重写的函数就会覆盖原来的函数,并且其也是虚函数。继承是指一个类从另外的类中以不同的方式去继承成员变量以及成员函数。

2024-09-08 15:37:52 563

原创 单例模式的概述

(不使用静态对象是因为其在程序启动的时候就会初始化,不符合懒汉式的初衷)同时需要使用一个公共接口来释放空间,并且其空间本质上只有一个,所以当有多个副本时,需要记录副本数,在使用释放接口的时候,判断是否释放空间。当程序开始执行时,在 main 函数之前,全局对象和静态对象(包括静态成员变量)的构造函数会被调 用,进行初始化。注释:在类中不能定义一个对象,应为其大小不确定,但是可以定义类类型的指针,因为指针的空间大小是确定的。,因为拷贝构造函数的实质是另外创建一个对象,不符合单例模式只有一个对象的特点。

2024-08-26 16:41:32 437

原创 拷贝构造函数详解

而当存在指针类型的成员变量的时候,就需要深拷贝函数,因为若是浅拷贝,正在创建的对象的指针变量和被拷贝的对象的指针就都包含同一块地址,在两者的作用域结束后,就会调用析构函数,两次析构函数都释放同一块空间,就会造成“double free”问题。上文说过,一般来说,我们不需要主动定义拷贝构造函数,编译器会提供拷贝构造函数,但是在一些特定的情况下,我们需要主动定义。一般是不需要专门定义拷贝构造函数的,因为编译器在检测到没有定义拷贝构造函数的时候,就会自己定义一个缺省的拷贝构造函数。

2024-08-04 17:51:33 438

原创 构造函数详解

如果已经定义了有参构造函数,那么编译器就不会生成无参构造函数,此时如果没有定义无参构造函数,并且定义的类中有一个类类型的成员变量,就需要。在类实例化的过程中,我们会定义一些成员变量以及一些成员函数,而构造函数就是一个特殊的成员函数。其中第二点,一个是初始化后不能修改,所以不能在构造函数中初始化,一个则是因为在被定义时必须要初始化。在定义一个类的时候,定义多个构造函数不会出错,只要注意参数的不同就可以。在类定义的时候,只要输入对应的参数,编译器就可以调用对应的构造函数。以上是一个构造函数的基本应用。

2024-08-02 23:56:05 696

原创 程序的启动过程的过程解析

如在一个文件中定义了一个函数,而在另一个文件中进行调用,而没有在调用函数的文件中进行函数声明,那么目标文件之间就会有未解析的符号引用,导致链接过程失败,链接错误报告。尽管之前的三步使得机器已经能够识别,但还是需要经过链接才能够运行,这个阶段是将之前生成的目标文件以及需要的库文件整合,最终生成一个可执行文件——(在计算机的发展途中出现了多种语言,总体来说可以分为三类,机器语言,汇编语言,高级语言。这一步由汇编器完成,是读取编译器生成的汇编文件,将其汇编代码转换成机器代码,又称。

2024-07-28 18:58:47 177

原创 内存空间的布局以及全局变量和局部变量

栈区是由编译器自动分配和释放的,每当函数被调用时,都会在栈上为其分配一个新的栈帧,栈区中的数据是临时的,一旦函数执行完毕,对应的栈帧就会被释放,栈区中的数据也会被销毁。现在我们来了解一下在C++中的内存区域,一般来说,在我们运行程序的时候操作系统会给程序的不同部分 分配不同的内存空间,它包括一般有四个内存区域——分别是。全局变量的作用域是整个程序,因此在同一个程序中的不同文件的全局变量不能重名,而全局变量的生命周期从程序初始时开始,至程序终止时结束。存储的是已经初始化的全局变量和静态变量。

2024-07-26 00:18:37 807

原创 数组指针与指针数组

而二维数组,我们之前讲过,二维数组的元素是一个个一维数组,而结合一维数组的指针,那么二维数组的指针应该是可以指向每一个一维数组的首元素地址,那么二维数组的指针形式如下。在指针数组中变量名 p 是先和‘ [ ] ’ 结合构成数组,而‘ * ’则是和 ‘ int ’联系,表明数组的元素类型为整形指针,最终构成一个指针数组。前一个代表的是数组的行数,后一个代表的是数组的列数,其实二维数组的元素可以理解为是一维数组,数组有一维数组,二维数组,一般数组名可以被当作是指向数组首元素的地址。指针数组的实际操作如下。

2024-07-25 00:54:00 680

原创 函数指针与指针函数的本质

函数指针与指针函数的在学习过程当中,很容易让人混淆,将两者分辨清楚,不仅可以夯实基础,在未来的多线程以及QT等工作当中也会有所应用。函数指针本质上是一个指向函数地址的指针,而在C/C++中函数名本身就可以解释为函数的地址。返回值类型)( * 指针变量) (形参1,形参2.......)指针函数使用时必须要用一个指针类型的变量去接受函数的返回值。返回值类型)( 函数名) (形参1,形参2.......)在C++中如果想要函数 的地址,就要在前面加上(

2024-07-24 16:08:57 251

原创 指针常量和常量指针的本质与不同

因为指针被定义后如果不进行初始化,它将会指向一个不确定的,随机的位置(成为野指针),在常量指针中,如果不及时初始化,指针就会自动指向一个随机的位置,这个位置在“ const ”的修饰下变得无法修改,所以之后就无法再进行赋值;:主要是看解引用符( * )与关键字( const )的位置,当"const"在 “ * ” 的前面的时候,表示一个常量指针,反之则是一个指针常量。因为常量指针是一个指向常量的指针,修饰的是指针所指的内容;常量指针:本质上是一个指向常量的指针,指针指向的值是无法改变的。

2024-07-22 20:43:37 648

空空如也

空空如也

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

TA关注的人

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