C++面向对象程序设计(第二版) 教学课件 ppt 作者 张俊 Ch01-C++语言基础

上传人:E**** 文档编号:89494236 上传时间:2019-05-25 格式:PPTX 页数:94 大小:400.69KB
返回 下载 相关 举报
C++面向对象程序设计(第二版) 教学课件 ppt 作者 张俊 Ch01-C++语言基础_第1页
第1页 / 共94页
C++面向对象程序设计(第二版) 教学课件 ppt 作者 张俊 Ch01-C++语言基础_第2页
第2页 / 共94页
C++面向对象程序设计(第二版) 教学课件 ppt 作者 张俊 Ch01-C++语言基础_第3页
第3页 / 共94页
C++面向对象程序设计(第二版) 教学课件 ppt 作者 张俊 Ch01-C++语言基础_第4页
第4页 / 共94页
C++面向对象程序设计(第二版) 教学课件 ppt 作者 张俊 Ch01-C++语言基础_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《C++面向对象程序设计(第二版) 教学课件 ppt 作者 张俊 Ch01-C++语言基础》由会员分享,可在线阅读,更多相关《C++面向对象程序设计(第二版) 教学课件 ppt 作者 张俊 Ch01-C++语言基础(94页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计,第1章 C+语言基础,内容提要,1.1 程序设计基础 1.2 函数与引用 1.3 数组、指针与字符串 1.4 结构类型,1.1程序设计基础,1.1.1 数据类型 1.1.2 命名空间 1.1.3 常用运算及其运算符 1.1.4 语句与控制结构,1.1.1数据类型思想1,先有类型,再有变量 int/char/doublex; struct Students; enum Colorc; 基本数据类型/用户自定义类型,1.1.1数据类型思想2,类型标识符与typedef 基本类型:int/char/double 复合类型: int a10; typedef int A1010; A

2、10 a; 练习: int f(int);,1.1.1数据类型思想3,关于数据类型的计算: 定义变量:通过变量体现数据类型的性质,运算和功能. 变量的几个基本运算: 定义: T t; 赋值: T t, val; t = val; 初始化: T a; T b = a; T c(a); 声明:定义性声明; extern,1.1.1数据类型作用,数据类型的作用: 内存大小 取值范围 运算集合,1.1.1数据类型作用1,在内存中所占空间的大小 1.字符型数据的大小: n, 101, 0x45 2.整型数据的大小:4个字节 3.占用字节数最多的数据类型: double, long double,1.1.

3、1数据类型作用2,取值范围和表示范围 1.范围最大的数据类型: double, long double 2.整型数据的范围: 3.有符号/无符号的区别 4.limits头文件,1.1.1数据类型作用2,取值范围和表示范围,1.1.1数据类型作用3,运算集合 1.适用于整型数据的运算; 2.适用于浮点型数据的运算: 2.0-1.0, 2.0/1.0, 2.0%1.0,1.1.2命名空间概念,初衷:解决标识符的命名冲突问题 途径:限制所在的空间范围namespace,1.1.2命名空间概念,举例:P5/例1.3,1.1.2命名空间访问标识符,用using namespace指令 简化访问,用usi

4、ng namespace指令 简化访问,建议:写完整的 空间名称,1.1.3常用运算及其运算符,左值/右值 常用运算 算术运算 赋值运算 增量/减量运算 关系运算,逻辑运算 下标运算 函数调用运算 类型转换运算,1.1.3左值/右值,左值:lvalue,能够出现在=左边的表达式 右值:rvalue,只能出现在=右边的表达式 常量只能用作右值. 变量可以用作左值,也可以用作右值.,1.1.3常用运算算术运算1,二元运算;右值运算 实现过程的伪代码,1.1.3常用运算算术运算2,算术运算类函数对象 举例:P8/例1.5,1.1.3常用运算赋值运算,二元运算 左值运算,1.1.3常用运算增/减量运算

5、,一元运算 实现过程的伪代码,1.1.3常用运算增/减量运算,前置运算是左值运算,1.1.3常用运算关系运算1,二元运算 关系运算之间的等价关系,1.1.3常用运算关系运算1,关系运算类函数对象 举例:P10/例1.6,1.1.3常用运算逻辑运算,逻辑运算类函数对象 举例:P11/例1.7,1.1.3常用运算下标运算,二元运算;左值/右值运算 实现过程的伪代码,1.1.3常用运算函数调用运算,多元运算;左值/右值运算 实现过程的伪代码,1.1.3常用运算类型转换运算,(DestinationType)sourceData; DestinationType(sourceData);,1.1.4语

6、句与控制结构,语句及其类型 三种控制结构 顺序结构 选择结构:if;switch 循环结构:while;do/while;for 转向语句 break;continue;return,1.2函数与引用,1.2.1 函数的基本概念 1.2.2 C+新增的函数机制 1.2.3 引用及其应用,1.2.1函数的基本概念,函数原型(prototype) 函数定义(definition) 函数调用(call),1.2.1函数概念举例,1.2.2C+新增的函数机制,内联函数 函数参数的默认值 函数重载 函数模板,1.2.2内联函数P18/例1.12,1.2.2函数参数的默认值,1.2.2函数重载P19/例1

7、.14,1.2.2函数模板引例,分析下列代码,考虑存在的问题,1.2.2函数模板数据类型参数化,1.2.2函数模板定义语法,template 返回类型 函数名(参数列表) /函数定义体 ,1.2.2函数模板定义语法,template T bigger(T a, T b) return a b ? a : b; ,1.2.2函数模板,1.2.2函数模板例1.15,1.2.2函数模板例1.16,1.2.3引用及其应用,引用的语法 引用作为函数参数 函数返回引用,1.2.3引用概念,引用(reference)是被引用变量(或者目标变量)的别名(alias). 引用作为目标的别名使用,对引用的修改实际

8、上就是对目标的修改.,1.2.3引用语法,数据类型 1).要求被引用的变量已经声明或者定义。 2).引用必须在声明的时候被初始化,否则会产生编译错误。,1.2.3引用操作,引用一旦初始化,它就维系(tie)在该目标上,再也不分开. 所有对引用的操作,都是对该引用所维系的目标的操作.,1.2.3引用操作-例1.19,程序的关键,1为什么n的值被改变?,2与r相关的什么值发生变化?,1.2.3引用两点结论,1.引用的地址:不会改变 2.对引用的重新赋值:改变被引用对象的值,int a(5), +ra - a;,1.2.3引用与指针比较,两者都是通过地址访问变量. 1).建立引用时必须初始化以指向确

9、定的对象;而指针建立时不一定. 2).引用建立后不能够再指向其他变量,而指针可以. 3).指针是个变量,而严格来说引用不是变量. 4).对引用和指针的重新赋值不同.,1.2.3引用三种形态,int n = 1; 普通对象: int m = n; 对象指针: int *p = ,对象句柄,1.2.3引用规则,在建立某类型的引用时,必须用同类型的变量初始化。 double d=1; int /VC:error,1.2.3引用指针的引用,可以对指针变量进行引用. e.g. int* a ; int* ,1.2.3.引用引用的指针,没有引用的引用,也没有引用的指针. int a; int,1.2.3.

10、引用与函数,引用作为函数参数 作为输入参数 作为输出参数 引用作为函数的返回值,1.2.3.引用与函数概念,给定一个关键字(key),在字典中找出其所在页码(page). bool look_up(char* key, int key: 输入参数 page: 输出参数 bool: 返回类型,1.2.3pass-by-reference,形式: 机制:形参是对实参的引用 特点:1.不需复制而高效传递实参; 2.通常会改变实参; 3.对象传递常用的方式; 4.没有时间和空间的开销.,1.2.3pass-by-reference,P25:例1.20,1.2.3引用作参数的常见用途,1.保留对实参的修

11、改 2.高效传递大对象实参 3.传递多个输出参数,1.2.3 e.g.1保留对实参的修改,1.2.3 例1.22保留对实参的修改,1.2.3e.g.3不保留对实参的修改,1.2.3e.g.4高效传递实参,1.2.3e.g.5传递多个参数,P26:例1.21,1.2.3e.g.5传递多个参数,1.2.3引用调用的评价,引用具有指针的威力,但是可读性比指针调用好. 引用调用具有传值调用语法的简单和直接,但是功能和威力比传值方式强.,1.2.3返回引用,引用返回时,不生成值的副本,而直接把表达式的值返回给主调函数. 但是值返回时,其中一定有临时变量的生成,因此效率较低.,1.2.3返回引用,1.2.

12、3正确返回引用,1).返回全局变量的引用; 2).返回局部静态变量的引用; 3).返回函数参数的引用; 4).返回堆对象的引用(慎用),1.2.3返回全局变量的引用,1.2.3返回局部静态变量的引用,1.2.3返回堆对象的引用,1.2.4综合应用,举例: P28/例1.25 P29/例1.26,1.3数组,指针与字符串,1.3.1数组及其应用 1.3.2指针及其应用 1.3.3字符串及其应用,1.3.1数组及其应用,数组的基本运算 数组作为函数参数 数组常用操作及STL算法,1.3.1数组的基本运算,数组定义:静态数组和动态数组 数组初始化和赋值:逐元素进行 访问元素:下标运算符 合法下标及常

13、用元素访问方式: 若数组a有n个元素,则所有元素可以表示为a, a + n) 半开半闭区间表示的两点好处,1.3.1输入/输出元素-1,1.3.1输入/输出元素-2,1.3.1输入/输出元素-3,1.3.1数组用作函数参数,1.3.1数组常用操作STL,查找:find,binary_search,1.3.1数组常用操作STL,最大/最小: max_element,min_element,1.3.1数组常用操作STL,计数:count,1.3.1数组常用操作STL,填充数组: fill,fill_n, generate,generate_n,1.3.1数组常用操作STL,数组排序:sort,1.

14、3.1数组常用操作STL,数组逆序:reverse,1.3.1 vector容器,优点:动态,下标访问 主要操作: 构造及赋值 大小及存取 添加与删除 应用举例: P40/例1.36,1.3.2指针及其应用,基本运算 指针与函数 函数指针 指针与const 动态内存分配 P42/例1.37,1.3.2函数指针-1,P43: 例1.38,1.3.2函数指针-2,1.3.2指向数组的指针,P44:例1.40,1.3.3字符串string,构造及赋值 输入及输出 大小及存取 插入与追加 截取与连接 替换与删除 查找字符或者字符串,1.3.4综合应用举例,P49/例1.42基本操作 P50/例1.43字符类型函数与函数指针 P51/例1.44Josephus问题,1.4结构类型,1.4.1结构定义与应用 1.4.2链表list,1.4.1结构定义与应用,定义结构类型与结构变量 结构的基本运算 结构用作函数参数:引用传递 结构与数组,指针 P55:例1.46点与直线,1.4.2链表,链表结构与算法 list容器 构造及赋值 大小及存取 插入与删除 合并,逆转及排序 关系运算 应用举例:P58-60,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号