面向对象程序设计Cha.ppt_第1页
面向对象程序设计Cha.ppt_第2页
面向对象程序设计Cha.ppt_第3页
面向对象程序设计Cha.ppt_第4页
面向对象程序设计Cha.ppt_第5页
已阅读5页,还剩38页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计及C 第三章C 概述 计算机系 本章主要内容 C 源程序的构成C 在非面向对象方面的特点 2 2 1C 程序的一般格式 简单C 程序示例 Simplec program1 cpp includevoidmain cout Hello world 执行结果Hello world Simplec programsum cppP20例3 1 CC 1 文件的扩展名2 注释3 头文件4 标准输出5 标准输入 2 2 1C 程序的一般格式 简单C 程序认识 流对象 运算符 2 2 2C 程序的结构特性 体现面向对象的思想 构成 示例程序 P20例3 1 主函数及有关子函数构成 2 2 3C 程序编辑 编译和运行 过程 同C语言常用C 版本带有C和C 两种编辑器 如 TurboC BorlandC VisualC NET 2 3C 在非面向对象方面的特性 C 对C语言的扩充 非面向对象的新特性 面向对象的新概念 自第四章起 本章内容 2 3 1注释行 两种方式 注释一段 或 注释一行 2 3 2新的I O流 流的概念预定义的流对象 数据由一个位置流向另一个位置 可以从流中提取数据或插入符数据 cin标准输入流 用来处理标准输入即键盘输入cout标准输出流 用来处理标准输出即屏幕输出 1 可以沿用传统stdio中的I O函数 2 在使用标准流cout cin时 C 程序必须包含头文件iostream h 3 cin和 cout和 要配对使用 说明 格式 1 输出 cout 表达式 表达式2 新的I O流 1 在输出语句中 可以串联多个插入符 输出多个数据项 在插入运算符后面可以写任意复杂的表达式 系统会自动计算出它们的值并传给插入符 如 cout a b c 格式 cout 表达式 表达式2 说明 新的I O流 2 标准输出流 格式 cin 表达式 表达式2 说明 在输入语句中 可以串联多个提取符 流表达式常常是获取输入值的变量 如 cin a b c 提取符可以从输入流中读取一个字符序列 即字符串 以空白符结束的字符序列 P22例2 33 输入数据时 必须注意所输入数据的类型应与接受该数据之变量的类型相匹配 新的I O流 3 标准输入流 C scanf d cin num cout Enternewnum cout Thenewnumis num n C 新的I O流 4 实例说明 新的I O流 5 使用操纵符对输入输出格式进行控制 endl 插入一个新行 作用等同于 n 2 3 3灵活的局部变量说明 随用随定义 体现灵活性 有利于节省时间 规定 与C的比较 2 3 4结构 联合和枚举名可直接作类型名 在定义变量时 不必在结构 联合 枚举前冠以struct union或enum 集中定义 说明 2 3 5const修饰符 定义常量 有数据类型 功能 定义 示例 与C的比较 与 define命令作用相似 但消除其不安全性 因为 define无法准确地反映常量的数据类型 P26例3 3 const类型定义符变量名 初值 constintsumValue 10 常量定义 说明 举例 const与指针的结合 指向常量的指针常指针 constchar pc asdf 指向常量的指针pc 3 a error 不能修改常量pc ghik right 可以指向另一个常量 说明 举例 char constpc asdf 常指针pc 3 a pc ghjk error pc是常指针 不能赋新值 将指针声明冠以const 使指向的对象为常量 将指针本身声明为常量 指向常量的常指针 constchar constcpc asdf cpc 3 a errorcpc ghik error 指针本身不可改变 指向的对象也不可改变 说明 举例 2 3 6内置函数 定义 作用引入原因 在函数说明前加关键字inline 成为内置函数 将函数体代码插入到函数调用处 消除函数调用时系统开销 提高运行速度 进栈 参数传递 调用 弹栈 返回 1 内置函数的定义必须出现在调用之前 2 与C中宏定义的比较3 内置函数体中不能有循环语句 条件语句 开关switch等控制流语句4 限制 一般将较短的函数定义为内置函数 说明 相同 作用与机理类似 改进 消除 define的不安全因素 2 3 7函数原型 要求 目的 格式 说明 必须为每个函数建立原型 便于编译程序进行检查 从而确定函数调用的正确性 返回类型函数名 参数表 P39 2 3 8带默认参数的函数 要求 示例程序 intadd intX intY returnX Y voidmain add 1 2 正确 实参与形参个数与类型都匹配add 1 错误 实参与形参个数不匹配add 1 1 2 2 错误 实参与形参类型不匹配 大家回顾起来了吗 回顾C语言对函数定义与调用的规则 实参与形参在个数与类型两方面都匹配 C 语言中的函数定义与调用的规则 intadd intX 3 intY 4 returnX Y voidmain add 1 2 正确 X 1 Y 2add 1 正确 X 1 Y 4add 正确 X 3 Y 4 大家知道这是什么函数吗 改进 示例程序 允许实参与形参在个数方面不相互匹配 但此时该函数应定义为带缺省形参值的函数 正确设置缺省形参值的方法 在缺省形参值的右面不能有非缺省形参值定义 intfun inti intj 5 intk 6 正确intfun inti intj 5 intk 错误 如fun 3 4 intfun inti 1 intj intk 6 错误 如fun 规定 示例 调用规则 调用时如给出实参 则采用实参值 否则采用预先定义出的默认形参值作为实参 缺省形参值的摆放位置 先定义后使用 即若调用在定义之前 缺省形参值在函数的原型说明中给出 但若调用出现在定义之后 则在定义时给出 intadd intX 5 intY 6 voidmain void add 调用在前intadd intX intY returnX Y intadd intX 5 intY 6 returnX Y 定义在前 voidmain void add 规定 示例 intadd intX intY returnX Y floatadd floatX floatY returnX Y 注 同一行为 不能使用同一名字标识 2 3 9函数重载 回顾C语言 要求 示例程序 在同一个程序内不能出现同名函数 允许将功能相近的函数共用一个函数名 形成同名不同形参定义的重载函数 intAdd intX ntY floatAdd floatX floatY C 语言中的重载函数 改进 优点 示例程序 命名统一 减少对函数名的记忆 是实现C 中静态多态性的一种手段 即 同一行为 使用同一名字来标识 C 编译器区分原则 根据不同的参数类型 参数个数 参数顺序自动选择一个合适的函数 对重载函数的要求 1 同名 但不同的形参定义 参数类型 参数个数 参数顺序 但不检查返回类型 2 说明 P33 2 3 2 3 10作用域限定符 include iostream h intX 1 voidmain intX 2 cout X 输出的X值是 2 同名覆盖原则 但如果要输出全局变量X的值 怎么办 回顾C语言 要求 示例程序 同一个程序中尽可能保持变量名的唯一性 最好不要同名 访问在局部变量作用域中的同名全局变量 include iostream h intX 1 voidmain intX 2 cout localX X cout globalX X C 语言中的全局作用域限定符 功能 示例程序 2 3 11无名联合 C 中一种特殊联合 即在union后没有给出联合名 说明 举例 union inti floatf 注意 可使用其中数据项名字直接存取如上例i 20 2 3 12强制类型转换 功能 格式 将一个表达式转换为所需类型 1 类型名 表达式 2 类型名 表达式 说明 C支持第一种格式 C 支持两种格式 推荐第2种 举例 inti 10 floatx float i 或者floatx float i 2 3 13C 中的new和delete 功能 使用形式 示例程序 P58例3 24 进行内存的分配和释放 p newtype 在内存中 数据堆中 分配一个sizeof type 的内存单元 并返回该内存单元的地址 比较C语言的malloc 和free 函数 功能 优点 类似 1 new自动计算要分配内存的类型大小 2 new自动返回正确的指针类型 3 new可以将分配的对象初使化 4 new与delete都可以被重载 使用说明 为数组动态分配内存空间 char ptr ptr newint 10 new可以为简单变量分配空间的同时 进行初使化 释放动态分配的数组存储区 使用如下格式 new分配内存失败 返回空指针NULLP58例3 24 New分配的空间只能用delete释放 ptr newint 10 delete p 注 区别如下两种不同的用法 int ptr newint 5 int ptr newint 5 大家知道其中的 5 各代表什么含义吗 定义分配一个int的内存单元并且赋初始值为5 然后返回该内存单元的地址到ptr中 定义分配一个int的数组 总计为5个元素 ptr指向该数组的起始地址 2 3 14引用 在不同的作用域内访问同一内存单元 概念 作用 格式 示例程序 变量的别名 数据类型 引用名 已定义的变量名 P59例3 25 说明 P59 63 在声明引用时必须对其初始化 1 对比C中指针 2 引用不能重新赋值 3 有些类型的数据无法建立引用 4 5 关于 运算符 6 指针 通过地址间接访问变量 引用 通过别名直接访问变量 voidmain intX 1 fun X voidfun int 引用作函数参数 示例程序 说明 函数的形参为引用 则说明时不必要加以初始化 此时形参为实参的引用 错误 voidfun int a 1 includevoidswap int m int n inttemp temp m m n n temp voidmain inta 5 b 10 swap 大家知道两者的差别吗 includevoidswap int 与C语言中指针作函数参数的比较 引用作函数参数的优点 提高调用速度 因为只需要传送地址而不需要直接将大量数据拷贝 因而特别适用于形参为大量数据的应用场合 structData inta 1000 AData voidfun structDataX structData i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论