如何写论文?写好论文?免费论文网提供各类免费论文写作素材!
当前位置:免费论文网 > 范文百科 > 期末复习

期末复习

来源:免费论文网 | 时间:2017-01-27 13:50:07 | 移动端:期末复习

篇一:给教师期末复习的几点建议

给教师期末复习的几点建议

还有一周多的时间就要期末考试了,为了提高复习效率。针对复习特作以下建议,希望对老师的复习有所帮助。

(一)制定一个实用、科学的复习计划。

包含:复习内容要全面而有重点。复习时间要具体到每节课。要有一个置前的学生分析,能够更有针对性的查漏补缺(尽可能了解所用学生的学习情况,尽可能给予有效的指导,尽可能发现普遍的问题)。写在复习备课本前。落实复习计划态度要坚定。坚定地让每个孩子都认识到。

(二)精心选择复习内容,备好主要复习课。(8节单元复习、6节综合复习、注意

不要完全用练习题代替备课,复习过程、复习方法应该是非常重要的)

(1)横向复习以课本、单元测试题为主线、纵向复习以自编题为主线、综合练习以

历年的考试题为主。每种复习之后都要有较正式一次模拟测试。

(2)精心选择复习资料。尽量少重复、提倡自己编题。

(3)复习每个单元的环节要清晰。(讲、练、评、考)。练习和考试要区别开。每 次考试都要做好反馈和分析,建议建立复习阶段成绩统计表。可以张榜公布,让每个 孩子系统地了解自己复习阶段的成长和变化。

(4)发挥复习备课的三种功能。课前的预设功能(明确本节课的复习任务)、课中的记录本、课后的反馈本(不让一个学生掉队,算清帐。)

(三) 复习方法多样化。

(1)一个复习动员会。利用班会时间组织(让每个孩子紧张起来,乃至让家长重视起来)

(2)合作与竞争。

(3)游戏与比赛。(一分钟读背赛、五分钟抄默赛、十分钟练笔赛、简便计算比赛、动手操作画图比赛等)

(4)适度的奖励,注意持续性。

(四)复习态度。

(1)良好的师生关系。切忌带着情绪进教室。不要让一两个差生破坏了复习的兴趣 和信心。

(2)有张有驰,劳逸结合。除了较正式的考试外,其他的尽量按照作息时间。

(3)优生、中游生、差生(纪律差生、学习差生)的不同要求。优生、中游生保持 良好的习惯、差生重在补漏)让优生有事可做(课外书)。差生适当减少一些题。(题 型不变、题量减)严格要求优生不要让他们翘辫子,多鼓励表扬中游生和差生)。

(4)正确发挥表扬和批评的作用。表扬要以多肯定努力程度。批评要抓住其漏洞, 批得他心服口服。最忌表扬的浮起来,批评的疲沓。

(五)避免几个问题。

(1)双边忙。避免以资料代替复习。避免以考试代替复习。

(2)双边闲。复习内容凌乱浅显,复习无计划,复习效率低。

(3)避免粗枝大叶、复习就是细节的落实。(不妨备个错题本、检查习惯。)

(4)避免只重视知识、忽视了书写。

(5)避免各科教师各自为战。协调好、合作好。

态度决定一切!决定心态、决定方法、决定复习效果,希望大家八仙过海、各显神通,使复习紧张而愉快。

篇二:期末复习

第一章

4.Java程序的运行机制是怎样的?与C++或其他语言有什么不同?

【答】Java的每一个类都有一个class文件和它对应,Java在程序的启动的时候将程序运行需要用到的类加载到虚拟机中,根据Java的虚拟机规范进行连接(动态连接),程序的组装是在运行的时候完成的

C++和其他的编译型的语言一样,它的程序的组装方式是一种传统的组装方式。C++在编译的时候生成适用于某一平台的二进制代码,在连接的时候找到需要调用的库,然后将这些库中的代码连接进可执行程序之中,生成的可执行程序运行速度非常的快,但是可执行代码已经变成了一个整体,不可能再分开

5.什么是平台无关性?Java是怎样实现平台无关性的?

【答】平台无关性即Java程序的运行不依赖于操作系统。Java采用虚拟机技术实现平台无关性。程序由虚拟机解释执行,不同的操作系统上运行不同版本的Java虚拟机。

7.什么是解释执行?Java怎样解释执行两种应用程序?

【答】解释执行即将字节码解释成本地机器码并执行。

Java源程序文件经编译后生成字节码文件,若是application应用程序,则将字节码文件交由Java解释器解释执行,最后在windows操作系统上运行。若是applet应用程序,则将字节码文件嵌入超文本文件并下载到web浏览器上,最后由windows操作系统中的Java虚拟机运行。

10.什么是包?为什么需要包机制?JAVA有那些包?各有什么功能?

12程序中的错误有哪几种?分别在什么时刻被发现?

第二章

4.试分析基本数据类型与引用数据类型的主要特点,并说明使用这两种变量有哪些差别?

【答】基本数据类型的变量保存数据值,而引用数据类型的变量保存地址。

7.什么是最终变量?如何声明最终变量?

8.什么是变量的作用域,声明变量时,如何确定变量的作用域?

【答】 变量的作用域是指其作用范围。变量声明的位置决定了它的作用域

11.说明for、while、和do-while三种循环语句的特点和区别?

While语句的特点:“先判断后执行”,当条件满足时执行循环体

Do-while语句的特点:“先执行后判断”,先执行循环体,在判断条件是否满足

For语句的特点:“先判断后执行”,但for语句将循环控制变量初始值、循环条件和变量的变化规律都以表达式形式写在循环体之前。

12.下列程序希望用for语句求出1~n累加和并显示,请问程序有错误吗?错在哪里?输出结果i和s的值分别是多少?

int i=1,n=10,s=0;

for(i=1,i<=n,i++);

s+=i;

System.out.pointln(“Sum=1+??+”+n+”=”+s);

有错误,正确的如下

int i=1,n=10,s=0;

for(i=1,i<=n,i++)

s+=i;

System.out.pointln(“Sum=1+??+”+n+”=”+s);

14.作为引用数据类型,数组变量与基本数据类型的变量使用时有哪些区别?

【答】数组变量与基本数据类型变量不同点在于,存储单元的分配方式不同,两个变量之间的赋值方式也不同。基本数据类型变量获得存储单元的方式是静态的,声明了变量后系统就为变量分配了存储单元,就可以对变量赋值。两个变量之间的赋值是值本身。 数组变量的引用赋值,数组变量保存的是数组的引用,即数组占用的一片连续存储空间的首地址及长度特性。当声明一个数字变量而未申请空间时,变量是未初始化的,没有地址及特性值。只有申请了存储空间,才能以下标表示数组元素。

第四章

2接口不能被实例化,为什么能声明接口对象?接口对象引用谁的实例?

4-3 什么是单重继承?什么是多重继承?类的层次体系为什么需要多重继承?单重继承有什么缺点?既然有缺点,为什么Java仍然采用单重继承?Java怎样实现多重继承?

【答】单重继承就是一个类只能有一个父类。多继承就是可以有多个父类。现实中的对象往往表现出多种特性,用单重继承无法客观描绘,因此需要多重继承。但是C++的多重继承过于复杂,因此Java用“单重继承+接口”代替了多重继承,以提高运行效率,增加安全性,降低复杂性。

4-5 什么是接口?接口和抽象类有哪些相同之处和不同之处?

【答】接口是一组常量和抽象方法的集合。在Java中,接口是一种引用数据类型,用关键字implements声明。接口与抽象类的区别为:

相同点:1.两者都包含抽象方法,约定多个类共用方法的参数列表和返回值。2.两者都不能被实例化。3.两者都是引用数据类型,其变量可被赋值为子类或实现接口类的对象。

不同点:1.抽象类约定多个子类之间共同使用的方法;接口约定多个互不相关类之间共同使用的方法。2.抽象类与子类之间采用单重继承机制;一个类实现多个接口则实现了多重继承的功能。3.抽象类及其类中成员具有与普通类一样的访问权限;接口的访问权限由public和缺省两种,接口中成员的访问权限均是public。4.抽象类中可以包含非抽象方法,也可以声明构造方法;接口中的方法必须全部是抽象方法,不能声明构造方法。5.抽象类中可以声明成员变量,子类可以对该成员变量赋值;接口中只能声明常量。

第五章

5-11 说明throw语句与throws子句的区别。

【答】1.throws 用于抛出方法层次的异常, 并且直接由些方法调用异常处理类来处理该异常, 所以它常用在方法的后面。比如 public static void main(String[] args) throws SQLException

2.throw 用于抛出代码层次的异常,常用于方法块里面的代码,常和try...catch ....语句块搭配实用,比throws的层次要低。

第六章

6-6 什么是事件?什么是事件源?事件处理程序写在哪里?

【答】事件是指一个状态的改变,或者一个活动的发生。产生事件的组件称为事件源。事件处理程序写在事件监听器接口中声明的方法中。如:单击事件的事件处理程序由ActionListener接口中的actionPerformed()方法实现。

6-8 说明Java的委托事件模型。

【答】事件源产生一个事件,并把这个事件发送到一个或多个监听程序,监听程序只是等待这个事件并处理它,然后返回。即程序把事件的处理“委托”给一段“代码”。

6-13 在事件处理方法中,怎样区分不同的事件源组件?

【答】事件接口中的所有事件处理方法,都采用相应的事件对象e作为参数,

用e.getSource()方法可返回产生当前事件对象的事件源组件。

6-14 窗口上有哪些事件?每种事件在什么时候被触发?这些事件的触发次序是怎样的?

【答】窗口上的事件有:

windowOPend,windowActivated,windowDeactivated,windowIconified,windowDeiconified,windowClosing,windowClosed。每种事件的触发分别在:打开窗口、激活窗口、窗口失去焦点、窗口最小化、窗口恢复、关闭窗口时、关闭窗口后。触发次序与前述书写顺序相同。

第七章

7.1 什么是进程?什么是线程?进程与线程的关系是怎样的?

【答】进程:进程是一个可并发的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。

线程:线程是操作系统进程中能够独立执行的实体,是处理器调度和分派的基本单位。 线程是进程的组成部分,每个进程内允许包含多个并发执行的线程。

7.5 一个线程对象的生命周期有哪几种状态构成?各状态之间是如何变化的?

【答】

线程对象的生命周期主要包括:新建态、就绪态和运行态、阻塞态和等待态、终止态。新建态通过start()方法是线程成为运行态,当运行态遇到sleep()或wait()方法时就进入等待态,而当sleep()时间到或通过notify()方法线程就又进入了运行态;当运行态遇到synchronized()方法时就进入阻塞态,当线程获得互斥锁使用权时就又到了运行态;当线程的run()方法结束时整个线程就进入了终止态,整个线程结束。

7.6 Java提供了哪些方法能够改变线程状态?程序中能够调度线程立即执行吗?

【答】Java中提供了start()方法来启动已创建的线程对象;sleep()方法使当前线程睡眠若干毫秒,线程有运行态进入等待态,但是不交出临界区的锁;yield() 方法暂停当前线程的执行,允许其他线程竞争CPU;stop()方法来结束一个线程;wait()方法将本线程设为等待态;notify() 方法来唤醒当前处于等待态的线程;interrupt()方法改变当前线程的中断状态,但是当前线程还可以继续执行。

7.12 关键字synchronized是什么含义?为什么wait()和notify()方法要

synchronized同时使用?

【答】synchronized用于声明一段程序为临界区,使线程对临界资源采用互斥使用方式。

wait()和notify()不是属于线程类,而是每一个对象都具有的方法,而且这两个方法都和对象锁有关,有锁的地方必有synchronized()方法,故wait()和notify()方法要与synchronized同时使用。

7.14 说明sleep()和wait()方法的异同。

【答】wait是Object类的方法,sleep与yield都是Thread类的方法。wait调用的时候需要注意的是该方法是释放锁标志的,而sleep在调用的时候是紧紧抱着锁标志的,也就是等他完全执行完成了才可以让其他线程来访问的

sleep 方法使当前运行中的线程睡眼一段时间,进入不可运行状态,这段时间的长短是由程序设定的,yield 方法使当前线程让出 CPU 占有权,但让出的时间是不可设定的。

7.16 什么是死锁?什么情况下会死锁?

【答】由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。

当多个线程同时被阻塞,他们中的一个或者全部都在等待某个资源被释放,由于线程被无限期地阻塞,因此程序处于非正常终止,才会产生死锁。

7.17 什么是交互线程?交互线程可能产生那些与时间有关的错误?有哪些机制用于保证交互线程对共享变量操作的正确性?

第八章

8.3 一个Applet应用程序至少要包含哪两个文件?各是什么类型?

【答】至少包含一个HTML文件和一个Applet字节码文件,

8.6 Applet的生命周期有哪些状态组成?这些状态之间的关系是怎样的?状态改变时将执行哪些方法?方法由谁调用执行?

【答】Applet生命周期包括初始态、运行态、停止态、消亡态。一个Applet对象经历由初始态、运行态、停止态、到消亡态的一个生命周期,各状态之间变化由用户对浏览器的操作而触发。当打开或刷新浏览器窗口时,创建Applet对象,系统自动调用init()方法;当浏览器显示Applet时,执行start()方法进入运行态;当浏览器不显示Applet时,系统自动调用stop()方法,Applet进入停止态,当再次调用start()方法后,Applet又进入运行态;当关闭浏览器时,执行stop()方法,Applet停止运行,再执行destroy()方法,Applet对象被销毁。Applet的各个状态的转换都是由浏览器自动调用各个方法来改变的。

第九章

9.1什么是流?流有什么用?面向对象语言为什么需要流?哪些场合需要流?

答:流是指一组有顺序、有起点和终点的字节集合,是对数据传输的总称或抽象(也就是数据在两个对象之间的传输称为流)。

流的作用就是使数据传输操作独立于相关设备。

在面向对象的程序设计中,数据的传输和流动具有广泛性,可以在内存与外部设备之间传输,还可以从内存到内存,甚至可以从一台计算机通过网络流向另一台计算机等,故面向对象语言采用流机制。

在标准输入/输出、在文件的读/写等操作中都需要流。

9.9能否将一个对象写入一个随机存取文件?

答:不能

9.10 Applet应用程序能否使用流与文件操作?为什么不能? 答:不能。

篇三:c++期末复习资料

1、 面向对象相关概念:

类:具有相同属性和行为的对象集合,把数据和操作封装在一起

对象:数据+操作。

面向对象特征:抽象,封装,继承,多态

2、输入输出:输入cin>>a>>b;输入不能有endl。 输出cout<<a<<b<<endl;

3、const修饰符:

? 指向常量的指针:如const char *p=”abcd”;不允许改变指针所指的常量,如p[3]=’

x’是错误的,但是可以改变指针p的值p=“mn”;是对的。

? 常指针:char *const p =“abcd”;指针本身是常量,不能移动,但是所指内容为变

量,可以更改,如p[3]=’x’是对的。

? 常数据成员,常成员函数,常对象:在类中声明的数据或函数可以是常量,对于常数

据成员要用初始化列表初始值,在C++类中,const关键字可以修饰对象和成员函数,const对象不能被修改,一个常对象只能调用它的常成员函数,不能调用普通成员函数。 常成员函数格式:类型说明符 函数名(参数表)const;常成员函数可以参加重载。常成员函数不能更新对象的数据成员,也不能调用该类中的普通成员函数,const成员函数不能修改数据成员。

4、内联函数:在函数说明前冠以关键字inline,目的是消除函数调用时的系统开销,提高运行速度。

注意:

内联函数体内不能有循环语句和switch语句。

内联函数的声明必须出现在内联函数第一次被调用之前。

类结构中所有在类说明体内定义的函数都是内联函数。

5、带有缺省参数值的函数:在说明函数原型时,可以给一个或多个形参指定缺省值,调用时如给出实参,则采用实参值,否则采用预先给出的默认形参值。如某一个类point的构造函数原型为point(int x=1, int y=0);则参数x和y的缺省值为1和0.

注意:

在函数原型中,所有缺省值的参数都必须从右往左缺省,在函数调用时从左往右将实参与形参结合,如point(int x=1, int y=0) {X=x;Y=y;},那么执行point p(3)之后p的X和Y值分别为3,0.

6、函数重载:C++允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。

注意:

重载函数的形参必须不同: 个数不同或类型不同。编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。

例:

void add(int m, int n)

{ cout<<”two integer numbers m+n=”<<m+n<<endl; }

void add(float x,float y)

{ cout<<”two float numbers m+n=”<< m+n<<endl; }

int i=1,j=2;float f=1.0,d=2.0;

add(i,j);add(f,d);则前者调用第一个函数,后者调用第二个函数

输出two integer numbers m+n=3

two float numbers m+n=3.0

7、引用:引用(&)是标识符的别名,例如:int i;int &ri=i; //建立一个int型的引用ri,并将其初始化为变量i的一个别名。

注意:

声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象,不能声明完成后再赋值,如int i;

int &ri;//错误

ri=i;

一旦一个引用被初始化后,就不能改为指向其它对象。如:int i,j;

int &ri=i;

ri=&j;//错误

引用可以作为形参作为传地址调用,效果和指针一样。void swap(int& a, int& b) {...} 引用与地址符的区别:引用运算符仅在声明是带有引用运算符&,以后就像使用普通变量一样,其他场合使用&都是地址操作符

8、作用域标识符(::)如果希望在局部变量的作用域内使用同名的全局变量,在该变量前加上::,如::a代表全局变量。

9、new和delete

运算符new用来内存分配,最基本格式为:指针变量=new 类型名;该语句在程序运行时从自由存储区中为程序分配一类型名字节大小空间,该空间首地址被存于指针变量中。 运算符delete用于释放new分配的存储空间,基本格式:delete 指针名;

说明:

? 可以用new将分配的对象初始化,new和delete都可以重载。

? new分配的空间使用结束后应该也只能用delete显式释放,否则将不能回收而变成死

空间

? 使用new为数组动态分配内存:指针变量=new 类型名[下标值];如int *p=new

int[10];

释放时:delete []指针变量名;如delete []p;

? new可以为简单变量分配内存时同时进行初始化,指针变量=new 类型名(初始化列表); 如int *p=new int(10);

10、类是一种用户自定义类型,声明形式:

class 类名称

{

public:

公有成员(外部接口)

private:

私有成员

protected:

保护型成员

};类成员中缺省访问方式为私有

? 公有类型成员:在关键字public后面声明,它们是类与外部的接口,任何外部函数都

可以访问公有类型数据和函数。

? 私有类型成员:在关键字private后面声明,只允许本类中的函数访问,而类外部的

任何函数都不能访问。如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。

? 保护类型:在类的定义中,说明为protected的数据成员称为保护成员。保护数据成

员具有双重作用:对于其派生类而言,是公有的,而对于其外部的程序而言,是私有的

? 类的成员:成员数据与一般的变量声明相同,但需要将它放在类的声明体中。成员函

数在类中说明原形,可以在类外给出函数体实现,并在函数名前使用类名加以限定。也可以直接在类中给出函数体,形成内联成员函数。

? 类的对象是该类的某一特定实体,即类类型的变量。声明形式:

类名对象名;例:Clock myClock;

? 类中成员的访问方式:类中成员互访:直接使用成员名 类外访问:使用“对象名.成

员名”或“对象指针名->成员名“方式访问 public 属性的成员

11、构造函数

构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。

特点:

? 在对象创建时或new类名时由系统自动调用。

? 如果程序中未声明,则系统自动产生出一个默认形式的构造函数,只有程序中定义

有构造函数,系统不再自动生成缺省的构造函数

缺省构造函数 类名::缺省构造函数名(){}

? 函数名必须与类名相同

? 不能指定函数返回类型

? 参数可以有,也可以无,参数可以带默认形参值,所以一个类可以有多个构造函数,

从而构造函数可以重载。如有一个类A,当执行语句A a;时将自动调用该类的无参构造函数或缺省的构造函数或带默认形参值的构造函数,但无参构造函数和带默认形参值的构造函数二者同时出现容易出现调用时引起二义性

? 允许是内联函数

利用构造函数创建对象有两种方法:

? 用构造函数之间创建对象:类名 对象名(实参表);如point p(1,2);

? 利用构造函数创建对象时,通过指针和new来实现:

类名 *指针变量=new 类名(实参表);

如A *p=new A(1,2);注意类A声明对象指针并不调用构造函数,而是通

过new创建临时对象调用构造函数,所以该语句只调用构造函数1次

12、拷贝构造函数

拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用,作用是用已经存在的对象初始化另一个同类的新对象。

类名(类名 &对象名);//拷贝构造函数 如类A拷贝构造函数为: A (A &x); 拷贝构造函数特点:

? 也是构造函数,所以其函数名与类名相同,没有返回值

? 只有一个参数,并且是本类的对象引用,所以一个类只能有一个,不能重载 ? 每一个类都有一个拷贝构造函数,如果没有定义,系统会自动生成一个缺省的 调用拷贝构造函数3种情况:

? 当用类的一个对象去初始化该类的另一个对象时系统自动调用拷贝构造函数实现拷贝

赋值。

? 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。 ? 当函数的返回值是类对象时,系统自动调用拷贝构造函数。

深拷贝和浅拷贝:缺省的拷贝构造函数所实现的数据成员逐一赋值就是浅拷贝,当类中有指针时,需要自定义拷贝构造函数,谓深拷贝。

13、析构函数

完成对象被删除前的一些清理工作。

特点:

? 析构函数与构造函数名相同,但它前面必须加一个波浪号~

? 析构函数没有返回值

? 析构函数没有参数,所以一个类中只能有一个析构函数,所以析构函数不能重载 ? 当撤销对象时,或delete对象指针编译系统自动调用析构函数

? 如果没有定义析构函数,系统自动生成一个缺省的析构函数

类名::~缺省析构函数名(){}

14、成员初始化列表

在声明类时,不能在数据成员的声明中对数据成员进行初始化,一般在构造函数中用赋值语句进行,但对于内嵌的对象、常量、引用数据成员需要在构造函数的成员初始化列表中进行。带有成员初始化列表的构造函数一般格式:

类名::构造函数名(参数表):(成员初始化列表){。。。。}

15、this指针隐含于每一个类的成员函数中的特殊指针。

16、对象数组:类名 数组名[下标值];该数组中每个元素都是对象,都会自动调用构造函数,当数组中每一个对象被删除时,系统都要调用一次析构函数。

访问方法:数组名[下标].成员名

17、对象指针:类名 *对象指针名;定义对象指针不会调用构造函数

利用对象指针可以访问单个对象成员,如point *p,ob;p=&ob;p->show();或(*p).show(); 也可以用对象指针访问对象数组,对象可以作为函数参数,对象指针也可以

18、指向类成员的指针:通过指向成员的指针只能访问公有成员

指向类的非静态成员的指针

? 指向公有数据成员的指针:类型说明符 类名::*数据成员指针名;说明指针应该指

向哪个成员:指针名=&类名::数据成员名;通过对象名(或对象指针)与成员指针结合来访问数据成员: 对象名.* 类成员指针名 或: 对象指针名->*类成员指针名 ? 声明指向公有函数成员的指针:类型说明符 (类名::*指针名)(参数表);初始化:指

针名=类名::函数成员名;通过对象名(或对象指针)与成员指针结合来访问函数成员: (对象名.* 类成员指针名)(参数表)或:(对象指针名->*类成员指针名)(参数表) 指向类的静态成员的指针

? 对类的静态成员的访问不依赖于对象,可以用普通的指针来指向和访问静态成员

19、静态成员

? 静态数据成员

? 用关键字static声明,该类的所有对象维护该成员的同一个拷贝,必须在类外定义和

初始化,用(::)来指明所属的类。初始化格式:数据类型 类名::静态数据成员名=值;静态数据属于整个类,因此既可以通过某个对象,或对象指针去访问,也可以使用类名::静态数据成员名格式去访问它。

? 静态成员函数

? 一般来说,静态成员函数只能引用属于该类的静态数据成员或静态成员函数。 ? 静态成员函数没有this指针

? 类外代码可以使用类名和作用域操作符来调用静态成员函数。如类名::静态成员

函数名(实参表)或者对象。静态成员函数名(实参表)或对象指针-〉静态成员函数名(实参表)

如某类A:

class A

{

private:

static int totalW;

int w;

public:

A (int m)

{

w = m;

totalW +=m;

}

~A (){totalW - =w ;}

static int getT () { return totalW ;}

};

int A:: totalW =0;

void main ()

{

A al (50);

cout <<A:: getT () <<endl;

A a2 (100);

cout << a2.getT () << endl;

}

20、友元

友元是C++提供的一种破坏数据封装和数据隐藏的机制。提高程序运行效率

? 友元函数

不是当前类的成员函数,而是对立于当前类的外部函数,它可以访问该类的所有成员,包括公有,私有,受保护。友元函数不是类的成员,所以没有this指针,它不能直接引用对象成员的名字,它必须通过入口参数传递进来的对象名或对象指针来引用该对象的成员。

如某类girl的友元函数disp格式:void disp(girl &g);

? 友元成员

一个类的成员函数作为另一个类的友元,它既可以访问本类的所有成员,还可以访问friend声明所在类的所有成员

? 友元类

若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。 ? 友元关系是单向的,不具有交换性和传递性

21、派生类

? 继承的目的:实现代码重用。派生的目的:当新的问题出现,原有程序无法解决(或

不能完全解决)时,需要对原有程序进行改造。

? 派生类的声明

class 派生类名:继承方式 基类名

{

成员声明;

};

继承方式:三种继承方式(省略默认为私有继承),公有继承,私有继承,保护继承 不同继承方式的影响主要体现在:

内部访问:派生类成员对基类成员的访问权限

对象访问:通过派生类对象对基类成员的访问权限

在派生类中能够直接访问的是基类的公有成员和保护成员

? 公有继承(public)

基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。

派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。

通过派生类的对象只能访问基类的public成员。

? 私有继承(private)

基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可直接访问。

派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。

通过派生类的对象不能直接访问基类中的任何成员。

? 保护继承(protected)

基类的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可直接访问。

派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。

通过派生类的对象不能直接访问基类中的任何成员

22、类型兼容规则

?一个公有派生类的对象在使用上可以被当作基类的对象,反之则禁止。具体表现在: –派生类的对象可以被赋值给基类对象。

–派生类的对象可以初始化基类的引用。

–指向基类的指针也可以指向派生类。

?通过基类对象名、指针只能使用从基类继承的成员

23、多继承时派生类的声明

class 派生类名:继承方式1 基类名1,继承方式2 基类名2,...

{

成员声明;

}

注意:每一个 “继承方式 ”,只用于限制对紧随其后之基类的继承。


期末复习》由:免费论文网互联网用户整理提供;
链接地址:http://www.csmayi.cn/show/158573.html
转载请保留,谢谢!