C++面向对象程序涉及复习要点、重点复习.ppt_第1页
C++面向对象程序涉及复习要点、重点复习.ppt_第2页
C++面向对象程序涉及复习要点、重点复习.ppt_第3页
C++面向对象程序涉及复习要点、重点复习.ppt_第4页
C++面向对象程序涉及复习要点、重点复习.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

C 面向对象程序设计复习 2015 1 12 第1章复习要点 简单的C 程序 include 用cout输出时需要用 此头文件usingnamespacestd 使用命名空间stdintmain cout ThisisaC program n 用C 的方法输出一行return0 输入和输出 格式 cout endl表示结束一行 数据类型const常量定义 constfloatPI 3 14159 占用存储单元 只读不可写函数原型声明 格式 函数类型函数名 参数列表 intmax intx inty 要求 函数调用之前必须对所调用的函数作函数原型声明 函数重载 定义 overload 要求 参数个数或参数类型不同有默认参数的函数 格式 floatarea floatr 6 5 与函数重载的关系 函数模版 函数重载例题 1 对重载函数形参的描述中 错误的是A 参数的个数可能不同B 参数的类型可能不同C 参数的顺序可能不同D 参数的个数 类型 顺序都相同 只是函数的返回值类型不同 D 变量的引用 函数传值与函数传地址 对比引用与指针 P19例1 10 1 11内置函数 inline 作用 空间换时间作用域运算符 字符串变量 string定义 与字符数组的关系 赋值 字符串操作 复制 连接 比较new和delete运算符 例题 1 对于动态分配内存空间描述正确的是A 使用new运算符分配的内存空间的长度必需是常量B delete运算符可以释放动态的存储空间和静态的存储空间C 由new分配的内存空间是不连续的D delete运算符只能释放由new分配的动态存储空间 D 什么是蓝 类与对象 类和对象 在C 中 类是一种数据类型 intx classstudentstd1 基本数据类型 用户定义数据类型 变量 实例 对象 实例 1 类的声明与对象的定义2 类的数据成员与成员函数3 对象成员的访问4 构造函数与析构函数5 Const6 Static7 New与delete8 拷贝构造函数9 友元 第2章要点复习 基本概念 对象 封装与信息隐蔽 抽象 继承与重用 多态性 声明类类型 classCGoods private charName 21 intAmount floatPrice floatTotal value public voidCountTotal void 1 class关键字2 类名3 类体 格式4 类数据成员5 类成员函数6 访问限定符 定义对象的方法1 先声明类类型 然后再定义对象classStudentstud1 Studentstud1 2 在声明类类型的同时定义对象classStudent stud1 3 不出现类名 直接定义对象class stud1 类与结构体类型的异同1 用class声明的类如果不带成员访问限定符 所有成员默认限定为private 2 用struct声明的类如果不带成员访问限定符 所有成员默认限定为public 类成员数据成员 成员变量 private成员函数 成员方法 public inline成员函数成员函数的存储方式 成员函数的存储方式 对象成员的访问 对象名 成员运算符stud1 num 1001 对象指针Student p 类的封装性和信息隐蔽1 公用接口与私有实现的分离2 类声明和成员函数定义的分离P64 653 名词 对象 方法 消息stud display 第3章复习要点 构造函数 构造函数是特殊的公有成员函数 其特征如下 1 函数名与类名相同 2 构造函数无函数返回类型说明 注意是什么也不写 也不可写void 实际上构造函数有返回值 返回的就是构造函数所创建的对象 3 在程序运行时 当新的对象被建立 该对象所属的类的构造函数自动被调用 在该对象生存期中也只调用这一次 4 构造函数可以重载 严格地讲 说明中可以有多个构造函数 它们由不同的参数表区分 系统在自动调用时按一般函数重载的规则选一个执行 5 构造函数可以在类中定义 也可以在类外定义 6 如果类说明中没有给出构造函数 则C 编译器自动给出一个缺省的构造函数 类名 void 但只要我们定义了一个构造函数 系统就不会自动生成缺省的构造函数 只要构造函数是无参的或各参数均有缺省值的 C 编译器都认为是缺省的构造函数 并且缺省的构造函数只能有一个 构造函数的重载 缺省构造函数Time Time hour 0 minute 0 sec 0 Timet 带参数的构造函数Time Time inth intm ints hour h minute m sec s Timet 13 10 11 用参数初始化表Time Time inth intm ints hour h minute m sec s 使用默认参数的构造函数Time Time inth 13 intm 10 ints 11 hour h minute m sec s Timet 析构函数当一个对象定义时 C 自动调用构造函数建立该对象并进行初始化 那么当一个对象的生命周期结束时 C 也会自动调用一个函数注销该对象并进行善后工作 这个特殊的成员函数即析构函数 destructor 1 构函数名与类名相同 但在前面加上字符 如 CGoods 2 析构函数无函数返回类型 与构造函数在这方面是一样的 但析构函数不带任何参数 3 一个类有一个也只有一个析构函数 这与构造函数不同 析构函数可以缺省 4 对象注销时 系统自动调用析构函数 调用构造函数和析构函数的顺序 构造函数和析构函数例题 1 在下面有关对构造函数的描述中 正确的是 A 构造函数可以带有返回值B 构造函数的名字与类名完全相同C 构造函数必须带有参数D 构造函数必须定义 不能缺省2 在下面有关析构函数特征的描述中 错误的是 A 一个类中只能定义一个析构函数B 析构函数名与类名完全相同C 析构函数不能指定返回类型D 析构函数不能带有参数3 假定AB为一个类 则执行 ABa 4 b 3 p 2 语句时 自动调用该类构造函数的次数为 3B 4C 6D 94 对于任意一个类 析构函数的个数最多为 B A 0B 1C 2D 3 对象数组 对象数组的定义 初始化 建立数组的同时调用构造函数 P82例3 6对象指针 1 指向对象的指针2 指向对象成员的指针2 1 指向对象数据成员的指针2 2 指向对象成员函数的指针3 this指针 P85例3 7 this指针的作用 共用数据的保护Const 对内存的使用 只读不可写 写在首次 初始化完成 常对象constTimet 或 Timeconstt 常数据成员constinthour 常成员函数voidget time const 指向对象的常指针Time constp1 不可改变t的值 对象的动态建立和释放 new 静态成员Static 由关键字static修饰说明的类成员 成为静态类成员 staticclassmember 虽然使用static修饰说明 但与函数中的静态变量有明显差异 类的静态成员为其所有对象共享 不管有多少对象 静态成员只有一份存于公用内存中 静态数据成员 初始化 只能在类体外进行初始化 既可以通过对象名引用 也可以通过类名来引用静态成员函数 静态成员函数没有this指针 静态成员函数访问静态数据成员 不访问非静态成员 对象的赋值对象的复制拷贝构造函数类名对象2 对象1 Box Box constBox Static例题 假定类AB中有一个公有属性的静态数据成员bb 在类外不通过对象名访问该成员bb的写法为 1 静态成员 static 属于 类 而不属于 任何一个对象 它被同一个类的所有对象共享 友元友元函数 friendvoiddisplay Time友元类 允许另一个类或函数访问你的类的东西 ClassA Private inti 0 Friendclassb 声明 ClassB Voidmain Aa1 newA Bb1 newB Intj b1 i 可直接访问A类里的 如B是A的友元类 那么a对b完全开放包括private 也就是B可以访问A里任何东西 友元例题 13 关于友元函数的描述中 错误的是A 友元函数不是成员函数B 友元函数只能访问类中私有成员C 友元函数破坏隐藏性 尽量少用D 友元函数说明在类体内 使用关键字friend B 类模版 不考 第4章复习要点 运算符重载的方法 格式 函数类型operator运算符名称 形参表列 对运算符的重载处理 复数 P122例4 2 运算符重载的规则P124 126 运算符重载的实现1 类成员函数2 友元函数 双目运算符重载P134例4 4单目运算符重载区别 前置和后置 重载流插入运算符和流提取运算符 重点是格式 友元函数 普通函数istream 不同类型数据间的转换 不考 运算符重载例题 假定要对类AB定义加号操作符重载成员函数 实现两个AB类对象的减法 并返回相减结果 则该成员函数的声明语句为 A AB operator B ABoperator AB a C operator ABa D ABoperator AB a AB b B 第5章复习要点 面向对象程序设计有4个主要特点 1 抽象2 封装3 继承4 多态性 青处于蓝 而胜于蓝 继承 inheritance 机制是面向对象程序设计使代码可以复用的最重要的手段 它允许程序员在保持原有类特性的基础上进行扩展 增加功能 这样产生新的类 称派生类 继承呈现了面向对象程序设计的层次结构 体现了由简单到复杂的认识过程 多态性 polymorphism 多态性是考虑在不同层次的类中 以及在同一类中 同名的成员函数之间的关系问题 函数的重载 运算符的重载 属于编译时的多态性 以虚函数为基础的运行时的多态性是面向对象程序设计的标志性特征 体现了类推和比喻的思想方法 派生类的声明方式 定义格式 class派生类名 访问限定符基类名1 访问限定符基类名2 访问限定符基类名n private 成员表1 派生类增加或替代的私有成员 public 成员表2 派生类增加或替代的公有成员 protected 成员表3 派生类增加或替代的保护成员 分号不可少 继承过程 编制派生类时可分四步 吸收基类的成员 改造基类成员 发展新成员 重写构造函数与析构函数 不论是数据成员 还是函数成员 除构造函数与析构函数外全盘接收 声明一个和某基类成员同名的新成员 派生类中的新成员就屏蔽了基类同名成员称为同名覆盖 override 派生类新成员必须与基类成员不同名 它的加入保证派生类在功能上有所发展 派生类的构成 继承分类 a 多重继承 b 单继承 一个基类可以直接派生出多个派生类 派生类可以由多个基类共同派生出来 称多重继承 派生类成员的访问属性 多级派生时的访问属性P164例5 4 继承例题 1 在公有继承的情况下 基类成员在派生类中的访问权限 A 受限制B 保持不变C 受保护D 不受保护 9 在公有派生情况下 有关派生类对象和基类对象的关系 不正确的叙述是 A A 派生类的对象可以赋给基类的对象B 派生类的对象可以初始化基类的引用C 派生类的对象可以直接访问基类中的成员D 派生类的对象的地址可以赋给指向基类的指针 派生类的构造函数和析构函数 执行派生类构造函数的顺序是 调用基类构造函数 初始化基类数据成员 调用子对象构造函数 初始化子对象数据成员 执行派生类构造函数 初始化派生类数据成员执行派生类析构函数的顺序是 调用派生类析构函数 清理派生类增加数据成员 调用子对象析构函数 清理子对象数据成员 调用基类析造函数 清理基类数据成员 构造函数和析构函数次序例题 includeusingnamecpacestd classB1 基类B1声明 public B1 inti cout constructingB1 i endl B1 cout destructingB1 endl classB2 基类B2声明 public B2 intj cout constructingB2 j endl B2 cout destructingB2 endl classB3 基类B3声明 public B3 cout constructingB3 endl B3 cout destructingB3 endl classC publicB2 publicB1 publicB3 public C inta intb intc intd B1 a memberB2 d memberB1 c B2 b private B1memberB1 B2memberB2 B3memberB3 voidmain Cobj 1 2 3 4 constructingB22constructingB11constructingB3 constructingB13constructingB24constructingB3 destructingB3destructingB2destructingB1destructingB3destructingB1destructingB2 派生类构造函数一般形式 派生类名 派生类名 总参数表 基类名 实参表 子对象名 参数表 派生类新增成员的初始化语句 多层派生时的构造函数P172例5 7派生类的析构函数与构造函数一样 不能继承基类的 派生类例题 类A与类B都有public数据成员f 类C公有继承A和B 类C有public数据成员f 类D保护继承C d是类D的一个对象 从d访问类A的成员f的表达式是 d A f 多重继承 定义 classD publicA privateB protectedC 类D新增加的成员 多重继承派生类的构造函数派生类构造函数名 总参数表 基类1构造函数 参数表 基类2构造函数 参数表 基类3构造函数 参数表 派生类新增成员初始化语句 P176例5 8 多重继承的二义性 在多重继承时 基类与派生类之间 或基类之间出现同名成员时 将出现访问时的二义性 不确定性 采用同名隐藏规则或虚函数 仅针对成员函数 来解决 当派生类从多个基类派生 而这些基类又从同一个基类派生 则在访问此共同基类中的成员时 将产生二义性 采用虚基类来解决 inta inta inta 虚基类 P185例5 9 classA classB virtualpublicA classC virtualpublicA 基类与派生类转换 大材小用 第6章复习要点 一个接口 多种方法 多态性的概念 静态多态在编译程序时系统就可以确定调用哪个函数 因此静态多态性又称编译时的多态性 静态多态性是通过函数重载实现的 动态多态在程序运行中才能确定操作所针对的对象 它又称运行时的多态性 动态多态性是通过基类与派生类转换 虚函数实现的 多态性例题 C 语言中的多态性分为时多态性和运行时的多态性 编译 虚函数 虚函数是一个类的成员函数 定义格式如下 virtual返回类型函数名 参数表 关键字virtual指明该成员函数为虚函数 virtual仅用于类定义中 如虚函数在类外定义 不可加virtual 当某一个类的一个类成员函数被定义为虚函数 则由该类派生出来的所有派生类中 该函数始终保持虚函数的特征 当在派生类中重新定义虚函数 overridingavirtualfunction 亦译作超载或覆盖 时 不必加关键字virtual 但重新定义时不仅要同名 而且它的参数表和返回类型全部与基类中的虚函数一样 否则联编时出错 虚函数与改造类成员 同名覆盖 override 有关 如未加关键字virtual 则是普通的派生类中的新成员函数覆盖基类同名成员函数 当然参数表必须一样 否则是重载 可称为同名覆盖函数 它不能实现运行时的多态性 比较有虚函数的override和无虚函数的override 访问成员 includeclassB0 public voiddisplay coutdisplay voidmain B0

温馨提示

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

评论

0/150

提交评论