
c++
hjiam2
渴望成为一名码农,爱生活,爱运动,爱编程
展开
-
C++多态的实现原理
1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包转载 2013-11-14 11:14:24 · 994 阅读 · 0 评论 -
c++重载ostream的实现
#include using namespace std;class Point{public: Point(int _x = 0, int _y = 0, int _z = 0):x(_x), y(_y), z(_z){} Point(){} ~Point(){} friend ostream& operator<<(ostream &os, const Point &pd);原创 2014-09-19 04:26:14 · 6590 阅读 · 0 评论 -
堆排序的实现
#include#includeusing namespace std;void min_heapify(int a[],int i,int size){ int l = i * 2 + 1; int r = i * 2 +2; int min; if(l a[l]) min = l; else min = i; if(ra[r]) min =r; if(mi原创 2014-04-13 13:24:46 · 796 阅读 · 0 评论 -
快速排序的实现
#includeusing namespace std;void quickSort(int a[],int l,int r){ if(l>=r) return; int x=a[l]; int i=l,j=r; while(i<j) { while(xi) j--; if(x>a[j]) { a[i]=a[j]; i++; } whil原创 2014-04-13 11:28:50 · 976 阅读 · 0 评论 -
插入排序的实现
#includeusing namespace std;void insertSort(int a[],int n){ for(int i=1;i<n;i++) { int key = a[i]; for(int j=0;j < i;j++) { if(key<=a[j]) { for(int k=i-1;k>=j;k--) a[k+1]=a原创 2014-04-14 00:02:38 · 781 阅读 · 0 评论 -
C语言中volatile关键字的作用
一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的转载 2013-12-23 20:19:29 · 810 阅读 · 0 评论 -
C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别
1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。从作用域看:1>全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。2>静态局部变量具有局部作用域原创 2013-12-23 22:19:06 · 1007 阅读 · 0 评论 -
const关键字
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设原创 2013-12-23 19:52:07 · 752 阅读 · 0 评论 -
C++中堆和栈的区别
C++堆栈就是一种数据项按序排列的数据结构,只能在一端(栈顶(top))对数据进行插入和删除,一般分为堆和栈两部分。一、在C++中,内存分为5个区,分别是堆(heap),栈(stack),全局/静态存储区,常量存储区和程序代码区。1.堆(heap),就是new分配的内存块,它们的释放编译器不管,一般由程序员释放,一个new对应于一个delete,如果程序员没有释放,那么可能会由OS回收。原创 2013-12-19 18:38:39 · 970 阅读 · 0 评论 -
动态规划--钢条切割的C++实现
在《算法导论》动态规划那章,讲述了一个应用动态规划的例子--钢条切割。钢条切割的问题是这样的:给定一段长度为n英寸的钢条和一个价格表(i=1,2,...,10),求切割钢条方案,使得销售收益最大。我们可以采用一种简单的递归求解方法:我们将钢条从左边切割下长度为i的一段,只对右边剩下的 长度为n-i的一段继续进行切割(递归求解),对左边的一段则不再进行切割。用公式可以表示为:方法一:带备原创 2013-11-14 17:09:42 · 4198 阅读 · 0 评论 -
快速排序--c++实现
最近看了快速排序的算法,结合自己的理解,写了一个快排的程序。程序的核心思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。我凭借这个思想写了一个挖坑填洞的程序,实现如下:#includeusing namespace std;void QuickSo原创 2013-11-14 20:21:38 · 981 阅读 · 0 评论 -
打印文件的最后K行(C++和Java实现)
如题,file.txt的内容如下:1234567891011121314151617181920C++实现:#include#include#includeusing namespace std;//const unsigned int k = 5;#define k 5void printLastKLines(ifstream &原创 2014-09-02 16:54:16 · 1374 阅读 · 1 评论