自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态绑定的实现

当编译器发现类中有虚函数时,会创建一张虚函数表,将虚函数的函数入口放入虚函数表中,并且在对象中增加一个指针vptr指向虚函数表。当派生类覆盖基类的虚函数时,会将虚函数表中的对应指针进行替换,从而调用派生类覆盖之后的虚函数,从而实现动态绑定。

2023-04-10 21:36:29 53

原创 多态的实现有哪几种

多态分为静态多态和动态多态。静态多态是通过重载和模板技术实现的,是在编译阶段实现的;动态多态是通过虚函数和继承关系实现的,是在运行阶段实现的。

2023-04-07 21:01:16 60

原创 static关键字的作用

修饰局部变量,使得该变量在静态存储区分配内存空间;其生命周期与程序相同,但是只在作用域内有效;只在首次函数调用时进行初始化,之后的函数调用都不再进行初始化 修饰全局变量,使得该变量的在静态存储区分配内存空间;在声明变量的文件内都是可见的,在文件外不可见 修饰函数,在声明函数的文件内是可见的,但是在文件外是不可见的 修饰成员变量,维持一份拷贝,所有对象可以实现数据共享;不用实例化对象也可以调用;只能在类内声明,类外初始化 修饰成员函数,该函数不能用this指针,且只能访问静态成员;不用实例化对象就可以调用

2023-04-03 19:06:39 54

原创 野指针的产生原因及避免方法

指针未初始化。解决方法:将指针初始化,指向某个地址空间或者职位NULL 指针free或delete之后没有置空。解决方法:free或delete之后将指针置为NULL 指针的操作超越了变量的作用域。解决方法:在变量作用域之前将变量的地址空间释放置空

2023-04-03 18:22:11 54

原创 sizeof与strlen的区别

sizeof是运算符,strlen是库函数 sizeof的参数可以是数据类型也可以是变量,strlen的参数必须是带’\0’的字符串 编译器在编译阶段就计算出了sizeof的结果了,strlen的结果需要在运行时才能计算出来 sizeof的大小是数据类型占内存空间的大小,strlen的大小是字符串的实际长度 数组做sizeof的参数不会退化,做strlen的参数会退化成指针

2023-04-02 19:40:30 28

原创 冒泡排序实现

【代码】冒泡排序实现。

2023-04-02 17:56:50 20

原创 malloc和free与new和delete的相同与不同

相同点: 都是用来分配和释放内存空间的 不同点 malloc和free是c/c++的标准库函数,支持覆盖;new和delete是运算符,支持重载 malloc和free仅仅只能申请和释放内存空间;new和delete不仅可以申请和释放内存空间,而且会调用构造函数和析构函数 malloc和free返回的是void类型的指针,具体使用必须进行强转;new和delete返回的是具体类型指针

2023-04-01 16:50:40 51

原创 希尔排序实现

【代码】希尔排序实现。

2023-04-01 15:57:20 30

原创 给函数传参,指针和引用的使用时机

需要返回函数内定义的局部变量的内存时,使用指针,指针需要开辟内存,所以需要手动释放内存,不然会导致内存泄漏 对空间大小比较敏感的时候使用引用,引用不需要开辟临时空间,开销更小 类对象作为非参数传递的时候需要用引用,这是c++标准的要求

2023-03-31 19:25:45 65

原创 插入排序实现

【代码】插入排序实现。

2023-03-31 17:37:16 27

原创 指针和引用的区别

指针和引用的区别。

2023-03-31 17:10:17 27

原创 main函数前后程序都会调用哪些东西

main函数前后程序都会调用哪些东西。

2023-03-30 20:55:12 36

原创 leetcode第一天

2022-08-20 22:36:25 110

原创 分页和分段的区别

分页和分段的区别: 1、分页是信息的逻辑单位,分页是为了解决内存的外部碎片问题;分段是信息的物理单位,是为了更好的满足用户的需求。 2、分页中页的大小是固定的,是由系统决定好的;分段中段的大小是不固定的,是根据用户的需求来划分的,段的起始地址可以是主存的任何位置。 3、分页作业的地址空间是一维的,用户根绝逻辑地址即可表示地址;分段作业的地址空间是二维的,分为段名和段内地址。 4、分段的段内空间比分页的页面空间大,因此段表比页表段,分段存储方式可以提高内存的访问效率。 ...

2021-11-22 13:10:55 3732 1

原创 进程调度算法

进程调度算法 先进先服务调度算法 可以用于作业调度也可以用于进程调度,非抢占式调度算法,从就绪队列里选出最前边的任务,分配资源,易于实现,但是效率不高。 短作业优先调度算法 从就绪队列里选出预计计算时间最短的进程,分配资源,分配了资源之后就要一直执行到任务结束,除非发生了阻塞被处理机丢弃,对长作业不利。 高优先级调度算法 从就绪队列里选出优先级最高的进程,获取处理机。有抢占式和非抢占式两种调度算法。 高相应比优先调度算法 (等待时间+要求服务时间)/ 要求服务实践 = 响应时间 / 要求服务

2021-11-18 14:59:04 61

原创 2021-11-11

指向另一指针地址的指针 定义一个双重整型指针,该指针pi指向另一指针p,pi里存放的是p的地址,p里存放的是整型a的地址,通过解指针,可以得到**p = a。 int **pi; int *p; int a = 10; pi = &p; p = &a; *p = a; *pi = p; **pi = *p = a = 10; ...

2021-11-11 17:21:42 44

原创 2021-11-10

函数参数的传递 1、值传递:test01(int a,int b) 实现了将实参赋值给形参的操作,但是未对实参进行操作,所以只是改变了形参的值,实参的值没有改变。 举例: void test01(int a,int b){ int temp = a; a = b; b = temp; printf("a = %d,b = %d",a,b); } int main(){ int x = 4; int y = 6; te

2021-11-10 20:42:50 205

原创 2021-10-26

进程和线程 1.进程和线程的区别 答:线程是进程的子集,进程是系统中正在运行的一个应用程序,线程是进程之内独立执行的一个单元执行流。 2.每个进程之间是怎么进行交互的? 答:通过TCP/IP端口来实现交互的。 3.线程之间是怎么实现交互的? 答:线程之间共享同一块大的内存,大家的指针是同一个就可以看到各自的内存。 ...

2021-11-10 20:09:02 204

原创 2021-11-10

指针常量和常量指针 1、**int const p;(const int p;):常量指针 p被const修饰,所以p是不能修改的,即指针指向的值不能修改,指针的指向可以修改。 举例: int a = 10; int b = 20; int const p = &a; p = &b; //正确的,指针的指向可以修改 / *p = 20; */ //错误的,指针指向的值不能修改 2、*int const p; 指针常量 p未被const修饰,所以p可以修改,即指针的指向不能修改,但是

2021-11-10 20:01:34 250

空空如也

空空如也

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

TA关注的人

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