1 / 27
据说的分值安排,九道题
主要的复习方式,看 PPT 例题,亲自试验每个题的输出结果。
他说全是程序题,我觉得不考概念的话复习就很简单了,多看看例题,基本语句会用,就
不会考的太差了。
主要考点:
类框架
构造函数析构函数★
继承、派生类
用虚函数来实现多态性★
拷贝构造函数
异常机制
析构函数应用场景(释放类内指针指向的空间)
类内含有指针时需要注意的地方★
要重载 opreator= 函数
要写拷贝构造函数
析构函数中要释放指针指向的空间
(采用引用计数和写拷贝的方式)
常用运算符重载
派生类和访问权限的问题
模板(定义、实例化)★
类的复用(继承和包含)
我觉得考的可能性非常大的题目:
一道关于几个对象构造的顺序的读程序题 或者 一共调用了几次构造函数
一道关于虚函数实际调用的读程序题(也相当于考了继承,继承也可能再多考几题呢)
一道模板的题目(函数或是类)
一个关于运算符重载的问题
异常的题目(我觉得即便考到也不会考的很难)
cout 的默认输出格式(万一在程序输出题里碰到不是很亏)
还有他说的排序问题……(可能他出了一道写程序题里用到了排序,大家应该都会的)
题目类型
要求
题数
分值
读程序
写出输出结果
4
28
改错
2
10
写程序
手写代码
2
47
程序补全
填空
1
15
2 / 27
目录:
C++内容补充部分:............................................................................................................................................... 3
cin 和 cout 得会用吧 ....................................................................................................................................... 3
new 和 delete 的用法得理解 ....................................................................................................................... 3
引用的用法要理解 .............................................................................................................................................. 4
使用 cout 来实现标准化输出 ......................................................................................................................... 5
-、面向对象基础 ..................................................................................................................................................... 6
二、类和对象 ............................................................................................................................................................ 8
1、类定义格式 ..................................................................................................................................................... 8
2、多文件组织,头文件卫士 ......................................................................................................................... 9
3、:: . ->操作符,this 指针....................................................................................................................... 9
4、访问权限和信息隐藏 .................................................................................................................................. 9
5、友元(友元函数、友元类) ................................................................................................................. 10
6、构造函数(参数表初始化,何时调用构造函数,几个对象调用构造函数的顺序) .............. 10
7、析构函数....................................................................................................................................................... 12
8、进一步的数据保护 .................................................................................................................................... 13
9、static 静态成员变量成员函数的使用方法 ....................................................................................... 14
三、运算符的重载 ................................................................................................................................................ 15
1、哪些运算符可以重载 ............................................................................................................................... 15
2、重载常用一元运算符 ............................................................................................................................... 16
3、重载常用二元运算符 ............................................................................................................................... 16
4、重载输入输出流的运算符 ...................................................................................................................... 17
5、重载 [ ]下标运算符 ................................................................................................................................ 17
6、不同类型数据之间类型转换 ................................................................................................................. 18
7、引用计数和写拷贝 .................................................................................................................................... 18
四、包含与继承 ..................................................................................................................................................... 18
1、包含,一个类中包含另一个类的对象 ............................................................................................... 18
2、继承 ................................................................................................................................................................ 18
3、覆盖,同名隐藏,如何访问被隐藏了的基类的函数 ................................................................... 19
4、赋值兼容规则(儿子可以赋值给老子,老子不能赋值给儿子) ............................................ 20
5、多重继承(冲突和支配规则,冲突的解决方法) ........................................................................ 20
6、虚基类 ........................................................................................................................................................... 20
五、虚函数与多态性 ........................................................................................................................................... 21
1、多态的概念(编译时多态,运行时多态) ...................................................................................... 21
2、虚函数 ........................................................................................................................................................... 21
3、纯虚函数和抽象类 .................................................................................................................................... 22
六、模版 .................................................................................................................................................................. 24
1、模板的概念 .................................................................................................................................................. 24
2、函数模板....................................................................................................................................................... 24
3、类模板 ........................................................................................................................................................... 24
4、对模板的实例化的理解 ........................................................................................................................... 25
七、异常处理 ......................................................................................................................................................... 25
1、异常的概念 .................................................................................................................................................. 25
2、C++的异常处理机制 ................................................................................................................................ 26
3 / 27
C++内容补充部分:
cin 和 cout 得会用吧
使用标准名字空间 std 有 3 种方式:
整体声明 using namespace std;
使用时单个对象临时声明 std::cout<<"Hello C++"<<std::endl;
单个对象使用前声明 using std::cout;
new 和 delete 的用法得理解
new 与 delete 是 C++预定的操作符,它们一般需要配套使用。new 用于从堆内存申请一块
空间,一般动态用于动态申请内存空间,即根据程序需要,申请一定长度的空间,而 delete
则是将 new 申请的空间释放。
new 有以下的三种格式申请内存空间
new 数据类型
new 数据类型(初始值)
new 数据类型[常量表达式]
如
int * p1=new int;
int *p2=new int(2); //*p2 初始化值是 2
int *p3=new int[1000] //申请 1000 个单位内存空间
用 new 申请内存空间,并一定任何时候都能申请到足够的内存空间,因为系统资源有限。
所以一般申请完后加一个条件进行判断
if(p3!=null)
{
//程序代码
}
else
{
//抛出异常,内存空间申请失败
}
内存申请后一定要释放,主要是用 delete 或者 delete[]
关于何时用 delete 何时用 delete[]的问题,使用 new new 出来的一个变量用 delete,使用
new [] new 出来的一个数组空间使用 delete[]进行释放。
new 的时候,其实做了三件事,一是:调用::operator new 分配所需内存。二是:调用
构造函数。三是:返回指向新分配并构造的对象的指针。
delete 的时候,做了两件事,一是:调用析构函数,二是:调用::operator delete 释放
4 / 27
内存。
引用的用法要理解
一、引用简介
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型标识符 &引用名=目标变量名;
【例 1】: int a; int &ra=a; //定义引用 ra,它是变量 a 的引用,即别名
说明:
(1)&在此不是求地址运算,而是起标识作用。
(2)类型标识符是指目标变量的类型。
(3)声明引用时,必须同时对其进行初始化。
(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且
不能再把该引用名作为其他变量名的别名。
ra=1; 等价于 a=1;
(5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个
别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单
元。故:对引用求地址,就是对目标变量求地址。&ra 与&a 相等。
(6)不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建
立一个数组的别名。
二、引用应用
1、引用作为参数
引用的一个重要作用就是作为函数的参数。以前的 C 语言中函数参数传递是值传递,
如果有大块数据作为参数传递的时候,采用的方案往往是指针,因为 这样可以避免将整块
数据全部压栈,可以提高程序的效率。但是现在(C++中)又增加了一种同样有效率的选择
(在某些特殊情况下又是必须的选择),就是引用。
【例 2】:
void swap(int &p1, int &p2) //此处函数的形参 p1, p2 都是引用
{ int p; p=p1; p1=p2; p2=p; }
2、常引用
常引用声明方式:const 类型标识符 &引用名=目标变量名;
用这种方式声明的引用,不能通过引用对目标变量的值进行修改,从而使引用的目标成
为 const,达到了引用的安全性。
3、引用作为返回值
要以引用返回函数值,则函数定义时要按以下格式:
类型标识符 &函数名(形参列表及类型说明)
{函数体}
说明:(1)以引用返回函数值,定义函数时需要在函数名前加&
(2)用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。
三、引用总结
(1)在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函
数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。
5 / 27
(2)用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过 const
的使用,保证了引用传递的安全性。
(3)引用与指针的区别是,指针通过某个指针变量指向一个对象后,对它所指向的变量间
接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操
作就是对目标变量的操作。
(4)使用引用的时机。流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、
赋值操作符=的参数、其它情况都推荐使用引用。
使用 cout 来实现标准化输出-肯定不会考这么细
cin>>变量>>变量……;
用 get 读入一个字符
cout<<表达式<<表达式;