当前位置:首页 >> 其它课程 >> 期末复习2-2

期末复习2-2


高级语言程序设计 C++

张海威 南开大学计算机与控制工程学院

期末复习
http://cc.nankai.edu.cn

1 2

题型
复习知识点

Database & Information System Lab

2<

br />
考试题型
http://cc.nankai.edu.cn

?单项选择(20分) ?程序改错(16分) ?读程序写结果(24分) ?程序填空(20分) ?程序设计(20分)

Database & Information System Lab

3

期末复习
http://cc.nankai.edu.cn

1 2

题型
复习知识点

Database & Information System Lab

4

知识点汇总
http://cc.nankai.edu.cn

?类和对象
? ? ? ? ? 类的定义和对象的说明 构造函数与析构函数 拷贝构造函数 静态成员 友元

Database & Information System Lab

5

知识点汇总
http://cc.nankai.edu.cn

?运算符重载
? 友元方式 ? 成员函数方式 ? 注意运算符重载函数的返回值类型、参数类型

Database & Information System Lab

6

知识点汇总
http://cc.nankai.edu.cn

?派生类的定义与对象说明 ?派生类的构造函数
? 带有对象成员的派生类

?类的多态性
? 函数超载与动态联编 ? 虚函数、纯虚函数与抽象基类

Database & Information System Lab

7

知识点汇总
http://cc.nankai.edu.cn

?函数模板
? 函数定义 ? 函数调用

?类模板
? ? ? ? 类模板定义 类模板外定义成员函数的方式 类模板的实例化 实例化类对象的说明与使用

Database & Information System Lab

8

知识点汇总
http://cc.nankai.edu.cn

?基本输入/输出流类、文件输入/输出流类 的相关概念 ?>>和<<的重载函数 ?常用的格式控制函数与格式控制符 ?文本文件的读写方法
? >>、<< ? get、getline、put

?二进制文件的读写方法
? read、write
Database & Information System Lab

9

类和对象
http://cc.nankai.edu.cn

?类的定义
? 类的成员 ? 类的成员访问权限

?类的构造函数及对象的初始化
? ? ? ? 构造函数和析构函数 用构造函数初始化类对象的方法 指针对象的初始化方法 包含对象成员的类对象初始化方法

Database & Information System Lab

10

类和对象
http://cc.nankai.edu.cn

?类的静态成员
? 含义 ? 说明及使用方式

?类的友元
? 友元函数
? 在友元函数中,需通过类对象实现对类成员的访问 ? 类对象通常是友元函数的参数 ? 在类中通过友元方式重载运算符

Database & Information System Lab

11

类和对象复习要点
http://cc.nankai.edu.cn

?类的定义
? 类名为标识符,类由成员变量和成员函数组成, 注意类定义后面要加“;”

?类成员的访问
? 三种访问权限,默认为private,类内是指类 定义体和类的成员函数体。 ? 非友元、非继承的情况下,类外无法访问类的 私有成员和保护成员 ? 友元可以访问任意成员,派生类可访问保护成 员
Database & Information System Lab

12

类和对象复习要点
http://cc.nankai.edu.cn

?类的构造函数与析构函数
? 掌握构造函数与析构函数的调用顺序 ? 掌握构造函数的作用和写法,特别是采用初始 化符表的写法

?类对象的初始化
? 说明类对象的同时对其进行初始化,根据对象 后面是否有参数表决定采用有参构造函数还是 无参构造函数,注意对象初始化语句与构造函 数的一致性。
Database & Information System Lab

13

类和对象主要问题
http://cc.nankai.edu.cn

?类的定义
? 根据给出的成员变量和成员函数编写一个类, 需要自行设计带参构造函数以及其它功能函数 ? 注意:类的定义后面带分号,函数定义写在类 定义体之外时,要加限定

Database & Information System Lab

14

类和对象主要问题
http://cc.nankai.edu.cn

?类对象的说明
? 使用说明语句定义类对象的同时进行初始化, 特别注意对象数组和对象指针的初始化问题, 初始化时,注意与构造函数的参数形式一致 ? 注意:初始化对象指针要用动态分配符new, 初始化对象数组要为每个元素调用一次构造函 数

Database & Information System Lab

15

运算符重载复习要点
http://cc.nankai.edu.cn

?运算符重载函数的调用方式
? a+b ? a.operator+(b),或者a+b ? operator+(a,b)

?友元方式编写类的运算符重载函数
? 在类定义中增加友元函数说明,该函数的参数 全部为运算的分量

?成员函数方式编写类的运算符重载函数
? 将重载函数说明为类的成员函数,调用重载函 数的对象为第一运算分量,参数为其余运算分 量,注意运算分量的顺序问题
Database & Information System Lab

16

运算符重载复习要点
http://cc.nankai.edu.cn

?两种方式的区别:定义方式不同,调用方 式不同,成员函数方式注意运算分量的顺 序。

Database & Information System Lab

17

运算符重载主要问题
http://cc.nankai.edu.cn

?为某个类定义运算符重载函数
? 按照指定的方式(友元方式或成员函数方式) 设计运算符重载函数 ? 注意:函数名为“operator运算符”形式,参 数数量与重载方式有关,友元方式比成员函数 方式多一个参数。一般情况下,重载函数要有 返回值,其类型与重载运算符的运算含义有关。

Database & Information System Lab

18

运算符重载主要问题
http://cc.nankai.edu.cn

?使用重载运算符
? 根据类中运算符重载函数的定义,使用重载运 算符构造表达式 ? 注意:表达式中,运算分量的顺序与运算符重 载函数的参数顺序一致

?赋值运算符重载的问题
? 一般情况下,自定义的类对象之间允许使用 “=”直接赋值,这是“浅拷贝”。有些情况, 需要深拷贝,特别是类定义中包含显示析构函 数的时候,需要自定义拷贝构造函数
Database & Information System Lab

19

类的继承与多态性
http://cc.nankai.edu.cn

?派生类
? 说明方式 ? 派生方式及含义

?单继承、多重继承、多级继承 ?派生类的构造函数及对象初始化
? ? ? ? 构造函数的格式 派生类与基类构造函数的执行顺序 派生类与基类析构函数的执行顺序 派生类对象的初始化方法
20

Database & Information System Lab

类的继承与多态性
http://cc.nankai.edu.cn

?友元关系与静态成员的继承 ?赋值兼容性(3类) ?虚函数的定义及使用方法 ?动态联编与静态联编的含义及区别
? 用基类指针访问派生类对象

?纯虚函数的含义、定义及使用方法

Database & Information System Lab

21

继承与多态复习要点
http://cc.nankai.edu.cn

?派生类的定义
? 公有和保护成员可以继承,根据不同的继承方 式确定在派生类中的访问权限。私有成员不能 继承、构造函数与析构函数不能继承

?派生类对象的说明
? 说明派生类对象的同时进行初始化,初始化顺 序为:基类成员、对象成员、派生类成员;析 构的顺序与构造的顺序相反。 ? 注意在派生类的构造函数中,要包括初始化基 类成员和对象成员的值
Database & Information System Lab

22

继承与多态复习要点
http://cc.nankai.edu.cn

?基类指针指向派生类对象
? 可以将派生类对象的地址赋值给基类指针,注 意地址的有效性

?抽象基类与纯虚函数的定义
? 纯虚函数的写法:virtual 返回值 函数名 (参数表)= 0; ? 纯虚函数只能在派生类中进行实现,不能调用 纯虚函数。 ? 包含纯虚函数的基类为抽象基类,不能说明抽 象基类的对象,包括对象数组、对象指针。
Database & Information System Lab

23

继承与多态主要问题
http://cc.nankai.edu.cn

?定义基类及派生类
? 注意:要继承的成员,在基类中不能设置为私 有成员

?构造函数的定义与使用 ?构造函数与析构函数的调用顺序

Database & Information System Lab

24

继承与多态主要问题
http://cc.nankai.edu.cn

?基类指针访问派生类对象,调用派生类的 成员函数,实现多态性
? 设置基类指针,初始化为派生类对象,然后用 基类指针调用派生类的成员函数(虚函数) ? 注意:用基类指针访问的派生类成员函数必须 为虚函数,抽象基类和纯虚函数由特殊的要求

Database & Information System Lab

25

模板
http://cc.nankai.edu.cn

?函数模板的定义及调用方法
? 定义函数模板的格式 ? 类型参数 ? 调用时,以实参的类型作为类型参数的实例

?类模板的定义及使用方法
? ? ? ? 类模板的定义方法 类模板的类型参数和普通参数 类模板的成员函数定义方法 类模板的实例化方法
26

Database & Information System Lab

模板
http://cc.nankai.edu.cn

?类模板的特例版本
? 特例版本的含义 ? 特例版本的定义方法

?派生类模板的方法
? 一般类做基类,类模板做派生类 ? 类模板做基类、派生出类模板,基类用参数T ? 类模板做基类、派生出类模板,基类、派生类 都用参数T ? 类模板做基类、派生出类模板,基类与派生类 的类型参数不同
Database & Information System Lab

27

模板复习要点
http://cc.nankai.edu.cn

?函数模板的定义和调用
? 函数模板有类型参数和普通参数,在调用函数 模板时,首先对类型参数进行实例化,实例化 依据为类型参数对应实参的类型,实例化后的 函数模板是一个具体的函数

?类模板的定义
? 类模板有类型参数和普通参数,要设置类型参 数名,然后与类模板名一起作为成员的限定: ? 类模板名<类型参数名> ? 在类模板中,使用类型参数定义变量或成员, 直接使用普通参数 28 Database & Information System Lab

模板复习要点
http://cc.nankai.edu.cn

?类模板的实例化
? 类模板只有经过实例化采用成为一个具体类, 因此,使用类模板首先要进行实例化,方法为: 类模板名<类型实参,普通实参>,其中普通实 参为常量。实例化后的类模板成为具体类,说 明对象时,以“类模板名<类型实参,普通实参 >”作为类名

Database & Information System Lab

29

模板主要问题
http://cc.nankai.edu.cn

?定义函数模板并调用
? 类似于普通函数调用,通过实参设置类型参数

?定义类模板
? 注意写法

?类模板实例化
? 注意写法

?实例化类模板的使用
? 将实例化后的类模板当做普通类,注意类名的 写法
Database & Information System Lab

30

输入输出流
http://cc.nankai.edu.cn

?流的概念 ?流的含义 ?主要的流类
? ? ? ? ios istream ostream iostream

Database & Information System Lab

31

输入输出流
http://cc.nankai.edu.cn

?主要流类对象
? ? ? ? cin cout cerr clog

?提取运算符和插入运算符
? 有些情况下需重载

Database & Information System Lab

32

输入输出流
http://cc.nankai.edu.cn

?格式控制
? 格式控制符
? 直接在<<或>>表达式中使用
–cout<<setw(5)<<a;

? 格式控制函数
? 需要流类对象进行调用
–cout.width(5); –cout<<a;

Database & Information System Lab

33

输入输出流
http://cc.nankai.edu.cn

?常用的格式控制函数或控制符
? 输出宽度 ? 输出精度 ? 填充字符

Database & Information System Lab

34

输入输出流复习要点
http://cc.nankai.edu.cn

?格式控制函数
? ios::width(int),ios::precision(int), ios::fill(char)的使用方法: ? cout.width(5); cout<<”abc”<<endl; ? 格式控制函数只对下一个要输出/输入的内容 有效

Database & Information System Lab

35

输入输出流复习要点
http://cc.nankai.edu.cn

?格式控制符
? setw (int),setprecision(int), setfill(char)的使用方法: ? cout<<setw(5)<<”abc”<<endl; ? 格式控制符只对下一个要输出/输入的内容有 效,头文件:iomanip.h

Database & Information System Lab

36

输入输出流复习要点
http://cc.nankai.edu.cn

?插入提取运算符的重载函数
? 掌握返回值类型、参数类型,具体实现根据输 入输出不同的类对象灵活设计

Database & Information System Lab

37

输入输出流主要问题
http://cc.nankai.edu.cn

?按照指定的格式输入/输出数据
? 区分格式控制函数和格式控制符

?为某个类设计插入、提取运算符重载函数
? 注意函数的返回值类型、参数类型

Database & Information System Lab

38

文件读写
http://cc.nankai.edu.cn

?文本文件与二进制文件的区别
? ASCII方式 ? 二进制数方式

?文件的读写过程
? 打开文件
? 打开方式:P342

? 读写文件 ? 关闭文件

Database & Information System Lab

39

文件读写
http://cc.nankai.edu.cn

?文本文件的读写
? ? ? ? 插入运算符和提取运算符 get函数和put函数 getline函数 gets函数(C语言的库函数)

?二进制文件的读写
? read函数和write函数

?文件的随机访问
? seekp函数与seekg函数 ? tellp函数与tellg函数 Database & Information System Lab
40

文件读写复习要点
http://cc.nankai.edu.cn

?get函数与put函数
? 按字符读写文本文件

?read函数与write函数
? 按字节读写二进制文件

?getline函数
? 按行读取文本文件,以’\n’为行结束符

Database & Information System Lab

41

文件读写复习要点
http://cc.nankai.edu.cn

?tellg与tellp函数
? 获取二进制文件读/写指针的位置,以字节为 单位

?seekg与seekp函数
? 设置二进制文件读/写指针的位置,以字节为 单位

Database & Information System Lab

42

文件读写主要问题
http://cc.nankai.edu.cn

?读写文本文件

fin.get(ch); while(!fin.eof()){ //使用ch fin.get(ch); } //向文件中写字符 fout.put(ch);

Database & Information System Lab

43

文件读写主要问题
http://cc.nankai.edu.cn

?读写二进制文件
fout.write((char*)(&ss), sizeof(ss)); fin.read((char*)(&ss), sizeof(ss) );
char line[81]; ifstream infile(“getline_1.cpp”); //打开文件用于读 infile.getline(line, 80); while(!infile.eof()) { //尚未读到文件结束则继续循环(处理) cout<<line<<endl; //显示在屏幕上 infile.getline(line,80);//再读一行 } & Information System Lab Database 44

?按行读取文本文件

例题
http://cc.nankai.edu.cn

?1.4 关于类和对象的描述,下列说法正确的 是( ) A. 类的友元函数可以访问该类的私有数据成员 B. 不同对象的数据成员共享相同的内存空间 C. 类的公有函数成员不能访问类的私有数据成员 D. 可以在定义类时为该类的数据成员赋初值

Database & Information System Lab

45

例题
http://cc.nankai.edu.cn

?1.5 如果某个类TestClass的定义中只有下列原型的 构 造 函 数 : TestClass:: TestClass(int,int); 则下列表达式中,能够正确初始化TestClass类对象的是 ( ) A.TestClass Obj1; Obj1.TestClass(1, 2); B.TestClass Obj2[10](1, 2); C.TestClass *Obj3 = new TestClass(1, 2); D.TestClass Obj4 = TestClass(1, 2);

Database & Information System Lab

46

例题
http://cc.nankai.edu.cn

?1.6 下列函数中,不能重载的是( ) A.类的成员函数 B.类的非成员函数 C.类的构造函数 D.类的析构函数

Database & Information System Lab

47

例题
http://cc.nankai.edu.cn

?1.7 下列关于继承与多态性的描述中, 哪个是正确的( ) A.私有继承是将基类的成员继承为派生类的 私有成员 B.虚基类是只用来进行派生的类 C.基类中的友元函数不能被派生类继承,友 元类可以被继承 D.函数重载时,除了名称重用之外,参数表 和返回值类型不允许同时重用
Database & Information System Lab

48

例题
http://cc.nankai.edu.cn

?1.8 下列关于虚函数的描述,不正确的 是( ) A.全局变量在任何函数体内都有效 B.不能将析构函数说明为虚函数 C.虚函数不能是静态的成员函数 D.为了实现多态性,派生类必须重新定义基 类的虚函数

Database & Information System Lab

49

例题
http://cc.nankai.edu.cn

?1.9 关于函数模板和类模板,下列描述 正确的是( ) A.函数模板和类模板的类型参数只能是基本 数据类型 B.类模板的静态成员在定义类模板时创建 C.可以直接创建类模板的对象并用构造函数 进行初始化 D.函数模板可以重载而且不允许参数类型转 换
Database & Information System Lab

50

例题
http://cc.nankai.edu.cn

?1.10 关于输入 / 输出流,下列描述正确的是 ( ) A.cin和cout是C++语言中用于输入输出的流类 B.使用cin和cout进行文件读写,必须首先打开文件 C.cin和cout可以对任何类型的数据或类对象进行输 入输出 D.cin和cout以运算符重载的方式实现数据的输入输 出

Database & Information System Lab

51

例题
http://cc.nankai.edu.cn

时间类(Time)定义的框架为: class Time{ int hour; int minute; int second; public: …… } 请设计如下函数并给出完整的函数定义: (1)以友元的方式重载“>”运算符,实现时间类对象的比较。例如, time1为12:10:20,time2为13:15:25,则time2>time1 (2)以成员函数的方式重载“-”运算符,实现时间类对象的减法。例 如:time1为12:10:20,time2为13:15:25,time2-time1值为1:5:5。 (3)显示时间的Time类成员函数,显示方式为hour:minute:second
Database & Information System Lab

52


更多相关文档:

选修2-2期末复习

选修2-2期末复习_数学_高中教育_教育专区。选修 2-2 期末复习一、选择题(本大题共 12 小题,每小题 5 分,共 60 分,在每小题给出的四个选项中,只 有一...

期末复习2答案

2.电位分析法中,基于电子交换反应的电极一般分为四类电极,Ag/Ag+ 属于 第一 类电极,Ag/AgCl 属于 第 类电极,Pt/Fe2+,Fe3+属于 零 类电极。 3.阴极...

期末复习2

期末复习2_初二语文_语文_初中教育_教育专区。期末复习(二) 期末复习(一、复习《马说》《陋室铭》《口技》三篇课文,着重复习文下注释;继续复习八(下)古、、诗。...

高二理科数学期末复习用卷--选修2-2

高二理科数学期末复习用卷--选修2-2_数学_高中教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 高二理科数学期末复习用卷--选修2-2_数学_高中教育_教育专区...

期末复习课2

2财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 期末复习2 隐藏>> 计算题中,保留小数点后两位(或三位)有效...

高二数学(理科)期末复习题选修2-2、2-3

高二数学(理科)期末复习题选修2-2、2-3_数学_高中教育_教育专区。2012 年高二数学(理科)期末考试试题本卷分第Ⅰ卷和第Ⅱ卷两部分,共 3 页,满分 150 分,考...

期末复习总结2

个数 单价×数量=总价 总价÷数量=单价一 总价÷单价=数量 三年级数学下册知识点总复习单元 年月日 1 年分为平年、闰年;月分为大月、小月和特殊的 2 ...

英语期末复习2

107 期末复习英语默写 (2) 姓名___ 游戏 ___ 打电话 ___ 那,那个 ___ 在 ___ 钥匙 ___ 遗失 ___ 用 ___ 拼写 ___ 戒指 ___ 铅笔 ___ …...

选修2-1期末复习

选修2-1期末复习_数学_高中教育_教育专区。贵阳市普通中学 2013——2014 学年度第一学期期末考试试卷 高二数学(理科) D1 M B1 C1 人数 开始 12 10 10 8 6...

期末复习2

6页 免费 初二期末复习2 5页 免费 期末复习第2章 2页 2财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...
更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com