福建农林大学C++面向对象程序设计期末复习资料古月系列

上传人:我*** 文档编号:133314374 上传时间:2020-05-26 格式:PDF 页数:8 大小:204.27KB
返回 下载 相关 举报
福建农林大学C++面向对象程序设计期末复习资料古月系列_第1页
第1页 / 共8页
福建农林大学C++面向对象程序设计期末复习资料古月系列_第2页
第2页 / 共8页
福建农林大学C++面向对象程序设计期末复习资料古月系列_第3页
第3页 / 共8页
福建农林大学C++面向对象程序设计期末复习资料古月系列_第4页
第4页 / 共8页
福建农林大学C++面向对象程序设计期末复习资料古月系列_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《福建农林大学C++面向对象程序设计期末复习资料古月系列》由会员分享,可在线阅读,更多相关《福建农林大学C++面向对象程序设计期末复习资料古月系列(8页珍藏版)》请在金锄头文库上搜索。

1、 1 面向对象程序设计复习纲要面向对象程序设计复习纲要 第第1 1 1 1章 章 一 一 C C C C 对对C C C C的扩充的扩充 1 函数原型声明 函数类型函数名 参数表 2 函数的重载 同一函数名定义多个函数 这些函数的参数个数和参数类型不同 3 有默认参数的函数 可以只对一部分形参指定默认值 指定默认值的参数必须放在形参表列中的最右端 实参的个数可以与形参的个数不同 实参未给定的 从形参的默认值得到值 如果函数的定义在函数调用之前 则应在函数定义中给出默认值 一个函数不能既作为重载函数 又作为有默认参数的函数 4 引用 又称别名 引用与其所代表的变量共享同一内存单元 编译系统不给它

2、单独分配存储单元 区别声明引用变量还是取地址操作 看其前面有没有类型符 有必然是对引用的声明 对引用的初始化 可以用一个变量名 也可以用另一个引用 引用初始化后不能再重新声明为另一个变量的别名 5 内置函数 inline 在编译时将所调用函数的代码直接嵌入到主调函数中 使用内置函数可以节省运行时间 但却增加了目标程序的长度 内置函数中不能包括复杂的控制语句 如循环语句和switch语句 只有那些规模较小而又被频繁调用的简单函数 才适合于声明为inline函数 二 C 程序的编写和实现 从C 源程序到可执行程序的步骤 编辑 cpp 编译 obj 链接 exe 执行 第第2 2 2 2章章 面向对

3、象程序设计概述面向对象程序设计概述 面向对象系统的特性 1 封装性 就是把每个对象的数据和操作包装在一个类中 并尽可能隐藏对象的内部细节 2 继承性 是子类自动共享父类数据结构和方法的机制 这是类之间的一种关系 3 多态性 是指允许不同类的对象对同一消息作出的响应不相同 第第3 3 3 3章章类和对象类和对象 类的封装性和信息隐蔽类的封装性和信息隐蔽 通过类来实现封装性 类的作用是把数据和算法封装在用户声明的抽象数据类型中 类的公用接口与私有实现的分离 形成了信息隐蔽 构造函数构造函数 2 构造函数的名字必须与类名同名 在建立对象时自动执行构造函数 构造函数没有返回值 系统会自动生成一个空的构

4、造函数 构造函数可重载 析构函数析构函数 析构函数的名字是类名的前面加一个 符号 当对象的生命期结束时 会自动执行析构函数 析构函数不返回任何值 没有函数类型 也没有函数参数 因此它不能被重载 一个类只能有一个析构函数 拷贝构造函数拷贝构造函数 是一种特殊的构造函数 功能是将参数代表的对象逐一拷贝到新创建的对象中 其调用由系统自动实 现 只有一个参数 这个参数是本类对象的常引用本类对象的常引用 每个类都必须有一个拷贝构造函数 如果没定义 则系统自动产生一个缺省的 堆对象 堆对象 是在程序运行时根据需要随时可以被创建或删除的对象 通过new自动调用构造函数创建对象 用 delete自动调用析构函

5、数 释放对象 静态成员 静态成员 staticstaticstaticstatic 1 1 1 1 静态数据成员静态数据成员 在内存中只占一份空间 在程序编译时分配空间 到程序结束时才释放空间 既可以通过对象名引用 也可以通过类名和域运算符 来引用 只能在类体外进行初始化 如果未赋初值 则编译系统会自动赋予初值0 2 2 2 2 静态成员函数静态成员函数 静态成员函数 在类外调用公用的静态成员函数 要用类名和域运算符 没有没有thisthisthisthis指针 指针 静态成员函数与非静态成员函数的区别 非静态成员函数有this指针 而静态成员函数没有this指针 静态成员函数可以直接引用本类

6、中的静态数据成员 对本类中的非静态成员不能进行默认访问 如果一定要引用本类的非静态成员 应该加对象名和成员 运算符 thisthisthisthis指针指针 指向本类对象的指针 值为当前被调用的成员函数所在的对象的起始地址 静态成员函数没有this指针 3 友元友元 friendfriendfriendfriend 用于不同类的成员函数之间 类的成员函数与一般函数之间进行数据共享 1 1 1 1 友元函数友元函数 将普通函数声明为友元函数 友元成员函数 声明的时候 要加上成员函数所在的类名和域运算符 如 friend void Time display Date 2 2 2 2 友元类 友元类

7、 friendfriendfriendfriend 类名 类名 两点说明 1 友元的关系是单向的而不是双向的 2 友元的关系不能传递 第第 4 4 4 4 章章 派生类与继承派生类与继承 派生类对基类成员的访问权派生类对基类成员的访问权 public 保持 private 私有 protected 保护 派生类构造函数的调用顺序派生类构造函数的调用顺序 首先是虚虚基类构造函数 基类构造函数 子对象构造函数基类构造函数 基类构造函数 子对象构造函数 最后是派生类构造函数派生类构造函数 注意注意 各个基类构造函数的执行顺序取决于定义派生类时所指定的各个基类的顺序 而与派生类构造函数 的成员初始化列

8、表中给定的基类顺序无关 派生类构造函数使用中应注意的问题 1在基类中定义了默认构造函数或者没有定义任何构造函数时 派生类构造函数中省略对其基类构 造函数的调用 2当基类的构造函数使用一个或多个参数时 派生类必须定义构造函数 提供将参数传递给基类构 造函数的途径 虚基类虚基类 1 作用 保证多级继承中 间接共同基类时只有一份同名成员 2 虚基类的构造函数 带参数情况 虚基类所有的直接或间接派生类的构造函数的成员初始化列表中都要列出该虚基类构造函数的调用 只有用于建立对象的那个最派生类的构造函数调用虚基类的构造函数 虚基类的构造函数先于非虚基类的构造函数的执行 赋值兼容规则 赋值兼容规则 在需要基

9、类对象的任何地方都可以使用公有派生类的对象来替代 赋值兼容规则替代的3种情况 派生类的对象可以赋值给基类对象 派生类的对象可以初始化基类的引用 派生类对象的地址可以赋给基类类型的指针 在替代之后 派生类对象就可以做为基类的对象使用 但只能使用从基类继承的成员 第第5 5 5 5章章多态性多态性 4 多态性是指具有不同功能的函数可以用同一个函数名 这样就可以用一个函数名调用不同内容的函数 多态性分为静态多态性和动态多态性 静态多态性是通过函数的重载实现的 静态多态性又称编译时的 多态性 动态多态性是通过虚函数实现的 又称运行时的多态性 运算符重载运算符重载 1 运算符的重载的形式 operato

10、r 2 只有以下5种运算符不能重载 成员访问运算符 成员指针访问运算符 域运算符 sizeof 长 度运算符 条件运算符 3 运算符重载遵循着 四个不变 的原则 优先级不变 结合性不变 操作数个数不变 语法结构不变 4 两种运算符重载方式的比较 重载为类的成员函数时 函数的参数个数比原来的操作数要少一个 后置 除外 重载为类的友 员函数时 参数个数与原操作数个数相同 类型转换类型转换 转换构造函数 是将一个其他类型的数据转换成一个类的对象 转换构造函数 是将一个其他类型的数据转换成一个类的对象 使用转换构造函数将一个指定的数据转换为类对象的方法如下 1 先声明一个类 2 在这个类中定义一个只有

11、一个参数的构造函数 参数的类型是需要转换的类型 在函数体中指 定转换的方法 类名类名 其他数据类型其他数据类型 变量名变量名 函数体函数体 3 在该类的作用域内可以用以下形式进行类型转换 类名类名 指定类型的数据指定类型的数据 就可以将指定类型的数据转换为此类的对象 类类型转换函数类类型转换函数 是将一个类的对象转换成另一类型的数据 是将一个类的对象转换成另一类型的数据 类型转换函数的一般形式为 operatoroperatoroperatoroperator 类型名类型名 实现转换的语句实现转换的语句 虚函数虚函数 1 1 1 1 使用方法使用方法 1 在基类用 virtual 声明成员函数

12、为虚函数 在类外定义虚函数时 不必再加 virtual 2 在派生类中重新定义此函数 要求函数名 函数类型 函数参数个数和类型全部与基类的虚函数相同 并根据派生类的需要重新定义函数体 当一个成员函数被声明为虚函数后 其派生类中的同名函数都自动成为虚函数 如果在派生类中没 有对基类的虚函数重新定义 则派生类简单地继承其直接基类的虚函数 3 定义一个指向基类对象的指针变量 并使它指向同一类族中需要调用该函数的对象 4 通过该指针变量调用此虚函数 此时调用的就是指针变量指向的对象的同名函数 2 2 2 2 纯虚函数纯虚函数 在声明虚函数时被 初始化 为 0 的虚函数 virtualvirtualvi

13、rtualvirtual 函数类型函数类型 函数名函数名 参数表列参数表列 0 0 0 0 5 纯虚函数没有函数体 纯虚函数只有函数名而不具备函数的功能 不能被调用 纯虚函数的作用是在基类中为其派生类保留一个函数的名字 如果在一个类中声明了纯虚函数 而在其派生类中没有对该函数定义 则该虚函数在派生类中仍然为 纯虚函数 3 3 3 3 虚析构函数 虚析构函数 将基类的析构函数声明为虚函数时 由该基类所派生的所有派生类的析构函数也都自动成为 虚函数 虚析构函数能保证在撤销动态分配空间时能得到正确的处理 构造函数不能声明为虚函数 抽象类 包含纯虚函数的类抽象类 包含纯虚函数的类 抽象类不能定义对象

14、但是可以定义指向抽象类数据的指针变量 当派生类成为具体类之后 就可以 用这种指针指向派生类对象 然后通过该指针调用虚函数 实现多态性的操作 抽象类的作用是作为一个类族的共同基类 或者说 为一个类族提供一个公共接口 如果在抽象类所派生出的新类中对基类的所有纯虚函数进行了定义 那么这些函数就被赋予了功能 可以被调用 这个派生类就不是抽象类 而是可以用来定义对象的具体类 第第 6 6 6 6 章章 模板模板 类是对象的抽象 而模板又是类的抽象 也就用模板能定义出具体类 模板分为函数模板和类模板 函数模板函数模板 template 只适用于函数的参数个数相同而类型不同 且函数体相同的情况 函数模板的参

15、数个数至少一个 标准模板库标准模板库 STL 的代码分为三类 算法 容器 迭代器 第第 7 7 7 7 章章 C C C C 的的 I OI OI OI O 流流 头文件头文件 基本输入输出 istream文件输入输出 fstream 的重载的重载 ostream 题型 题型 一 单项选择题一 单项选择题 2 10 2 10 2 10 2 10 共 共 20202020 分分 二 多项选择题二 多项选择题 2 5 2 5 2 5 2 5 共 共 10101010 分分 三 填空题 三 填空题 2 102 102 102 10 共 共 20202020 分 分 四 程序分析题四 程序分析题 5

16、4 5 4 5 4 5 4 共 共 20202020 分分 五 完成程序题五 完成程序题 5 3 5 3 5 3 5 3 共 共 15151515 分分 完整程序去掉两行 补充完整 完整程序去掉两行 补充完整 六 编程题六 编程题 本大题共本大题共 2 2 2 2 小题 第一题小题 第一题 5 5 5 5 分 第二题分 第二题 10101010 分 共分 共 15151515 分分 具体题型样式 参考课件中的练习内容 具体题型样式 参考课件中的练习内容 6 四 五部分侧重考核知识点 四 五部分侧重考核知识点 多继承下构造函数 析构函数的调用顺序 继承机制下构造函数的重载 虚函数 友元及静态成员 类的声明和对象的定义 包括成员函数的类内和类外定义等 运算符重载 例 例 多继承下构造函数多继承下构造函数 析构函数的调用顺序析构函数的调用顺序 include iostream h class A public A cout A endl A cout del A endl class B public B cout B endl B cout del B endl class C publi

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

当前位置:首页 > 办公文档 > 教学/培训

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