- 博客(10)
- 收藏
- 关注
原创 C++的“开始”,main函数浅析
初学C++时,一般都会用hello world 这个示例来演示C++程序的语法及运行结果。那这时候肯定会有人说,为什么一定要写个 main函数?它有什么特别之处吗?但是这时候都会说 你只需要知道每个C++程序必须有一个名字为 main 的函数就行了,程序将从这个函数开始执行。不知道这时,大家会不会有疑问,main函数真的是必须的吗?main函数真的是开始执行的吗?它执行之前到底还干了什么事情?
2024-09-19 21:00:43
282
原创 (性能角度)pass by value的性能不一定比pass by reference低)
(性能角度)pass by value的性能不一定比pass by reference低)
2023-09-03 11:53:07
109
1
原创 为什么malloc(1000*1000*1000*1000*1000*...*1000)能在32位机器上分配成功并使用
首先int会自动向上转为longlong,然后longlong表达的整数是有范围的,编译器会自动对溢出值进行处理。首先这个问题表现形式是:运行malloc分配内存,这个明显在32位机器上是超过4g内存的,但是在运行时并没有报错,还是能正常运行。可以看到补码转原码值直接为0了。所以上述代码其实变为 malloc(0),这就是为什么malloc(1000*...*1000)是能过编译了。然后使用补码转原码工具。
2023-05-06 21:56:46
121
原创 尽量使用前置声明代替在自定义头文件中包含库的头文件
首先我们先示范下满足此编码规范的例子,如上图,在头文件中因为只会用到MyLineEdit类的指针,所以不要包含该类头文件,只需要前置声明。在源文件中因为会使用到MyLineEdit的构造函数,所以必须包含头文件。其次在一个文件中使用多个包含同一头文件的头文件时,会导致编译器提示重定义。首先在比较大型的项目时,多个头文件互相包含,会导致到编译时间过长。讲完这个问题是什么之后,我们就该到讲这个问题为什么的时候了。
2023-05-06 21:40:01
158
1
原创 qt 自定义窗口类,在实现自己的构造函数时为什么会在初始化构造列表调用父类构造函数
其实是无法直接在子类的构造初始化参数列表中初始化qt的父类 成员变量导致会在这个地方调用父类构造函数。如果能够直接初始化父类变量的话,不用父类构造函数直接初始化变量也是可行的。相信如果是学qt而不是简单的用qt的人的话,看到初始化构造列表中,有QWidget(parent)这个父类的构造函数时都会有疑问。有什么用,以及为什么要有这个。如果不调用父类构造函数,就会造成变量值未知,如果有使用这些未初始化的变量,那么会造成不可预知的错误。这个可以很简单的解答,它的作用是将子类对象中包含的父类变量初始化。
2023-05-06 21:23:33
484
原创 Belady现象浅谈
Belady现象:在分页式虚拟存储器管理中,发生缺页时的置换算法采用FIFO(先进先出)算法时,如果对一个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。
2022-06-01 22:09:47
4583
2
转载 希尔排序和快排和反转单链表
快排思想 选择一个数 比我小的排我前面 比我大的排我后面 最后递归左右两个子区间int quicksort(int *data, int left, int right) { //每一次递归, 每调用一次, 确定一个值得正确位置if (left >= right) return 0; int i = left; int j = right; int key = data[left];while (i < j) { // while (i &...
2022-05-31 13:27:22
120
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人