摘要:
内存对齐常量折叠 堆栈解退(stack unwinding) 模板特化模板偏特化 模板实例化 函数对象 单一定义规则(One-Definition Rule,ODR) 自引用 对象切片(object slicing)/切割:当把一个派生类对象赋给一个基类对象时,会发生对象切割。(另外用基类对象强制转换派生类对象也会),多态的实现是通过指针和引用;而对象的转换只会造成对象切割,不能实现多态。 所有权语义(owership semantics) 破坏性复制语义(distructive copy semantics) 菱形继承 向下强制:基类到派生类的转换 向上强制:派生类到基类的转换 交叉强制:从 阅读全文
posted @ 2012-07-02 22:10
Mr.Rico
阅读(2761)
评论(0)
推荐(0)
摘要:
第8章 二叉树和其他树1. 术语:树和二叉树的术语,如高度、深度、层、根、叶子、子节点、父节点和兄弟节点。4种常用的二叉树遍历方法:前序遍历,中序遍历,后序遍历和按层遍历。2. 线性数据结构,表数据结构,层次数据结构3. 二叉树与树的根本区别4. 二叉树的特性5. 二叉树遍历方法在前三种方法中,每个节点的左子树在其右子树之前遍历。这三种遍历的区别在于对同一个节点在不同时刻进行访问。在进行前序遍历时,每个节点是在其左右子树被访问之前进行访问的;在中序遍历时,首先访问左子树,然后访问子树的根节点,最后访问右子树。在后序遍历时,当左右子树均访问完之后才访问子树的根节点。在逐层遍历过程中,按从顶层到. 阅读全文
posted @ 2012-07-02 11:23
Mr.Rico
阅读(334)
评论(0)
推荐(0)
摘要:
常量 起初读者可能认为合乎逻辑的选择是把一个const放在类里,但这不会产生预期的结果。在一个类里,const 恢复它在C中的一部分意思。 它在每个类对象里分配存储并代表一个值,这个值一旦被初始化以后就不能改变。在一个类里使用const的意思是“在这个对象声明期内,这个是一个常量”。 然而,对这个常量来讲,每个不同的对象可以含一个不同的值。 把一个内部数据类型封装在一个类里以保证用构造函数初始化,是很用的。例如 class interger{int i;public:interger(int ... 阅读全文
posted @ 2012-07-02 02:41
Mr.Rico
阅读(1013)
评论(0)
推荐(0)
摘要:
1. 初始化一个引用变量必须在定义的时候。 而所有的运算符操作都被视为赋值而不是初始化,所以引用参数的初始化必须在初始化列表中进行。 class Test{ public: Test(int val) : ref_(val){} ~Test() {} private: int & ... 阅读全文
posted @ 2012-07-02 02:36
Mr.Rico
阅读(807)
评论(0)
推荐(0)
摘要:
1、什么是static? static是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。 2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)。 3、什么时候用static? 需要 一个... 阅读全文
posted @ 2012-07-02 02:33
Mr.Rico
阅读(1126)
评论(0)
推荐(0)
摘要:
求两个数的最大公约数问题,即常说的GCD问题,是一个经常用到的问题。这个问题的求解最常用的方法就是辗转相除的方法。这个方法其实就是下面的一个公式:gcd(a,b)=gcd(b,a%b)记住了这个公式就很容易写出它的程序了。第一:可以采用递归的方法: unsignedgcd(unsigneda,unsignedb){if(!b)returna;if(a<b)returngcd(b,a);elsereturngcd(b,a%b);}第二:所有的递归都可以转为迭代实现: unsignedgcd2(unsigneda,unsignedb){unsignedtmp;while(b!=0){tmp= 阅读全文
posted @ 2012-07-02 02:19
Mr.Rico
阅读(309)
评论(0)
推荐(0)
摘要:
之前介绍过常见的排序算法,可以查看这里之前实现的代码都是针对int型的算法,现在我将代码改写成了模板,这样可以应用于常见的一些类型。为了测试比较不同的排序算法,采用了两种计时方式。注意,下面的两段代码中,void(*_sort[])(T*,int) 是函数指针数组。1. 采用clock函数,统计排序算法所使用的时钟数代码如下: template<classT>voidclock_test(){void(*_sort[])(T*,int)={insert_sort,binary_insert_sort,shell_sort,shell_sort2,select_sort,select 阅读全文
posted @ 2012-07-02 01:10
Mr.Rico
阅读(1791)
评论(0)
推荐(0)

浙公网安备 33010602011771号