访问控制:protected

 保护类像是其他两个访问控制类private(私有),public(公共)的结合体。在基类中使用protected定义的成员和方法,对于外界来说跟private定义的成员和方法无异;但是对于基类派生的类来说,protected定义的成员和方法跟public无异。

阅读全文 »

算法描述

 快速排序由冒泡排序演进而来,基于分治的算法思想。每次排序时选择一个元素作为“基准值”,经过一轮排序,通过某种划分算法将待排表分为左右两部分,其中左边的元素全都小于基准值,右边元素全都大于基准值。这样,基准值就被放在了它的最终位置。随后,再对左右两个子表递归进行上述操作,最终能够实现排序目的。

阅读全文 »

算法描述

 将待排元素逐个向前相比较,使待排子表中最小的元素浮动到自己的最终位置。每一趟排序确定一个元素的最终位置,最多进行n-1趟排序。

阅读全文 »

算法描述

 假设待排数据存放在一维数组L[n]中,待排表在某一时刻的状态可分为三部分:(1)前面i个数据L[0],···,L[i-1]是已经使用直接插入排序排好的有序子表,简记为A。(2)第i个元素L[i]是本轮排序待排元素,简记为B。(3)后面n-i-1个元素L[i+1],···,L[n]是未排序的原始数据,简记为C。

阅读全文 »

成员函数重载操作符的缺陷

 在上一篇笔记中提到的操作符重载函数有一个隐藏的缺陷。看似平等的位于操作符两侧的两个操作数,实际上却不平等:

1
2
3
Time time3 = time1 + time2;
// equals to
Time time3 = time1+(time2);

阅读全文 »

同一类的所有对象共享同一组类方法

 也就是说,对于一个类,创建多个对象时会申请各自的内存空间用于存放内部变量和成员,但是类方法(成员函数)只有一个副本,多个对象在使用类方法时实际上访问的是同一个内存块。

阅读全文 »

重载解析

 所谓重载解析,也即当程序中存在多个重载函数时编译器决定调用哪一个函数的分析过程。一般来说,调用重载函数的优先级为:较为具体的非模板函数>不够具体的非模板函数>较为具体的模板函数>不够具体的模板函数。

阅读全文 »