C++
文章平均质量分 56
拂晓
Linux 网络编程
展开
-
虚函数的实现机制
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2012-09-01 17:07:11 · 562 阅读 · 0 评论 -
递归到非递归转换——归并排序与快排的非递归实现
在高级语言中,函数的参数传递是由栈来实现的,后调用的函数的参数在栈的上部,先调用的函数的参数在栈的下部,在实现递归函数时,每一次调用的参数等信息都会保存在栈中,这样在数据比较在时会出现栈溢出的错误,而且反复调用函数,会使效率变的较低,在VC中对10万个数排序,用递归的快排花了30ms,而用非递归,需要25ms。 而我们可以很容易的通过使用自定义的栈,来将其转化为全部在一个函数中实现原创 2011-09-14 13:32:17 · 1456 阅读 · 2 评论 -
记录一例内存泄漏
C++中基类的析构函数一直被要求写为virtual,是为了让子类正确的释放其实分配的空间,以前一直觉得主要是new出来的内存需要释放,这几天遇到一个内存泄漏问题,起因是new了子类对象,赋值给基类指针,但基类忘记写virtual的析构函数了,第一次将基类析构函数不写成virtual的效果由理论转成了实践,发现原来不只动态分配的内存需要子类的析构函数去释放,valgrind检查后发现包括原子类型的内原创 2014-12-31 14:03:39 · 474 阅读 · 0 评论 -
一个delete和析构函数引发的coredump
在一段代码中写了一段类似这样的代码:std::map data2itor;std::multimap tim2data;用tim来定时删除过期数据,正常删除时由data2itor中的second确定在tim2data中的位置从而删除,超时时由time2data确定超时数据,进行删除,数据是一个结构体的指针,在超时的时候要对结构体进行delete,但是在delete的时候在析构函数里做了原创 2015-04-18 17:22:09 · 3925 阅读 · 0 评论 -
数独
13年9月25号写的数独程序,虽然不怎么高大上,不过还是记录下。。#include#include#include#includeusing namespace std;//每行、列、小九宫中未用数字setset_row[9];setset_col[9];setset_area[9];char grid[10][10];//保存正在尝试的填充struct stak原创 2015-05-22 10:10:25 · 513 阅读 · 0 评论