面向对象程序设计复习资料_第1页
面向对象程序设计复习资料_第2页
面向对象程序设计复习资料_第3页
面向对象程序设计复习资料_第4页
面向对象程序设计复习资料_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象程序设计复习面向对象的三大特征:封装、继承、多态Chap5 内联函数p91:inline 内联函数的作用:提高效率 重载函数: 什么是重载函数 p94 重载函数的匹配规则 p93 默认参数(允许有重载函数) P96 3 Chap9引用 引用的概念p186(必须得初始化) 引用传递参数P189(P193例子看懂) 引用作为返回值和值返回之间的区别(P193例9.6) P203 练习9.2 9.3第11章 类和对象的定义 P233234 class 和struct的区别,默认的访问控制属性 类的定义:class关键字或struct关键字 对象的定义:类名 对象名不要关键字 定义成员函数的方

2、法 类内定义 p237类外定义§ 作用域操作符:可用在类内部,可以访问全局变量(同名覆盖的问题) 在局部范围中声明与外部范围变量同名的变量时,局部范围中的变量掩盖外部变量. 例1:double A; void main( ) int A; A = 5; / assigns 5 to int A 例2:double A; / global variable Avoid main( ) int A; / local variable A A = 5; / assigns 5 to local int A :A = 2.5; / assigns 5 to global double ACh

3、ap12· 构造函数( 是一种用于创建对象特殊的成员函数当创建对象时,系统自动调用构造函数,不能在程序中直接调用· 构造函数的作用是:为对象分配空间;对数据成员赋初值;请求其他资源· 构造函数是必须的。当没有用户定义的构造函数时,系统提供缺省版本的构造函数· 系统缺省版本的构造函数做公共初始化工作;用户提供版本的构造函数做用户要求的初始化工作· 构造函数名与类名相同· 一个类可以拥有多个构造函数(重载)·构造函数可以有任意类型的参数,但不能具有返回类型析构函数· 析构函数 是用于取消对象成员函数当一个对象作用域结束

4、时,系统自动调用析构函数· 析构函数的作用是进行清除对象,释放内存等· 析构函数是必须的。没有用户定义析构函数时,系统提供缺省版本的析构函数· 系统缺省版本的析构函数做公共善后工作;用户提供版本的析构函数做用户要求的善后工作· 析构函数名为: 类名· 析构函数没有参数,也没有返回类型· 析构函数以调用构造函数相反的顺序被调用。构造函数(可重载)、析构函数(不可重载)和重载之间的关系·内嵌对象的构造函数(含参数的情况)P281例12.12·冒号语法的使用:可以用来初始化常量和引用P283·构造对象的使用 p

5、285 1,2chap14·堆的使用P312·new和delete运算符·拷贝构造函数的使用 : 3种情况以及例子·浅拷贝和深拷贝的概念P321例14.4P327 练习14.2chap15(无大题,小题多) 静态成员(静态数据函数可以访问非静态数据成员) 静态数据成员:声明和初始化位置(类的成员函数声明部分) 静态成员函数:直接访问静态数据成员,可以间接访问非静态数据成员class X int member ; public : static void func ( int i , X a ) cout << a . member ;: 静态

6、成员函数和非静态的区别(this指针)p341友元的概念(不是类的成员函数)chap16·继承的概念,派生类的定义,派生类的构造函数·继承的方式·多态性和虚函数 以及2者之间的关系·虚函数的限制:p363·纯虚函数和抽象类 纯虚函数的定义·赋值兼容规则三种继承方式的 基类、派生类和派生类对象特性虚函数·在类的定义中,在函数原型之前写virtual。·virtual 只用来说明类定义中的原型,不能用在函数实现时。·虚函数是动态联编的基础。·是非静态的成员函数。·具有继承性,基类中定义了虚

7、函数,派生类中无论是否说明,同原型函数都自动为虚函数。·本质:不是重载定义而是覆盖定义。·调用方式:通过基类指针或引用,执行时会根据指针指向的对象的类,决定调用哪个函数。·静态联编和动态联编 联编的阶段 联便的实现·动态联编只能通过指针或引用标识对象来操作虚函数。如果采用一般类型的标识对象来操作虚函数,则将采用静态联编方式调用虚函数。·动态联编,虚函数和多态性之间的关系Chap17·多继承的构造顺序(P387(1)(2)(3)(4))·虚拟继承(虚基类)-二义性问题·继承的访问控制多继承的构造顺序class 派生类

8、名:继承方式1 基类名1,继承方式2 基类名2,. 成员定义;注意:每一个“继承方式”,只用于限制对紧随其后之基类的继承。多继承的构造顺序(1) 调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。(2) 调用对象成员的构造函数,调用顺序按照它们在类中声明的顺序。(3) 派生类的构造函数体中的内容。(4) 析构函数调用次序与构造函数相反。【上课时用的例子】虚基类 虚基类的引入-当一个派生类是从多个基类派生而这些基类又有一个公共的基类. 定义-以virtual修饰说明基类例:class B1:virtual public B 作用-主要用来解决多继承时可能发生的对同一基类继承多次而

9、产生的二义性问题.Chap18 运算符重载的含义和格式 · 若一运算符的操作需要修改类对象状态时,则它应该是成员函数, 定义成友员时要用引用参数。 · 如果运算符的操作数(尤其是第一个操作数)希望有隐式转换,则重载算符时必须用友员函数· 不能用友员函数重载的运算符是=()> 前增量和后增量的区别 赋值运算符的“浅拷贝”和“深拷贝” 类型转换 转换运算符P408 构造函数P414 练习 18.1 18.2重载 + + 和 - -C语言中,运算符 + + 和 - - 有两种方式(P405)前缀方式:+ + i ;- - i ; 一元 成员函数 重载:aa . o

10、perator + + ( ) ; 友员函数 重载:operator + + ( X & aa )/ 其中 aa 是 X 类的对象后缀方式:i + + ;i - - ;二元 成员函数 重载:aa . operator + + ( int ) ; 友员函数 重载:operator + + ( X & aa , int )这时,第二个参数(int)一般设置为 0例如:i + + ;等价于i + + ( 0 ) Chap19 I/O标准流类(标准流,文件流,串流 哪几个是预定义流?) 常用控制符(简单的控制符及作用 P422)chap20 模板的概念 函数模板、模板函数 类模板、模板

11、类(函数模板与类模板的区别?) 模板的定义 模板的参数 模板的使用P450 练习20.1Chap21异常处理的实现 P4534.8(1) #include <iostream.h>void main()for(int i=1; i<=10; i+) for(int j=1; j<=10-i; j+) cout <<" " for(int j=1; j<=2*i-1; j+) cout <<"#" cout <<endl; 4.8(2)#include <iostream.h>v

12、oid main()for(int i=1; i<=8; i+) for(int j=1; j<=i; j+) cout <<" " for(int j=1; j<=18-i; j+) cout <<"#" cout <<endl;9.2#include <iostream.h>#include <stdlib.h>int& put(int n); /put value into the arrayint get(int n); /obtain a value from

13、 the arrayint vals10;int error=-1;void main()put(0)=10; /put values into the array put(1)=20; /. put(9)=30;cout <<get(0) <<endl;cout <<get(1) <<endl;/. cout <<get(9) <<endl;put(12)=1; /out of range /.int& put(int n)if(n>=10) cerr <<"range error i

14、n put value!n" exit(1); return valsn;18.2#include <time.h>#include <iostream.h>#include <string.h>#include <stdlib.h>class Timepublic: Time(char* s=NULL);void operator+(Time& ti);void operator-(Time& ti);void Display();protected:int hour;int minute;int second;Tim

15、e:Time(char* s) char str9=0; char t3=0; if(s)strncpy(str, s, 8); else _strtime(str);hour = atoi( strncpy(t, str, 2) ) % 24;minute = atoi( strncpy(t, &str3, 2) ) % 60;second = atoi( strncpy(t, &str6, 2) ) % 60; void Time:operator+(Time& ti) int st; st = second + ti.second;second = (st) %

16、60;st = st/60 + minute + ti.minute;minute = (st) % 60;st = st/60 + hour + ti.hour;hour = (st) % 24;void Time:operator-(Time& ti)int st;st = 60 + second - ti.second;second = st % 60;st = 60 + st/60 + minute - ti.minute -1;minute = st % 60;st = 24 + st/60 + hour - ti.hour -1;hour = (st) % 24;void

17、Time:Display()char result9 = "XX:XX:XX" result0='0'+hour%10;result1='0'+hour/10;result3='0'+minute%10;result4='0'+minute/10;result6='0'+second%10;result7='0'+second/10;cout <<result <<endl;void main()Time a;Time b("02:15:30");a + b;a.Display();20.1#include <iostream.

温馨提示

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

评论

0/150

提交评论