您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象程序设计总复习资料(2013夏)
面向对象C++程序设计总复习第1页共22页面向对象程序设计总复习(2013_夏)复习之一、对照书本(或上课课件)上,搞懂有关概念【第0-1章】1.面向对象程序设计是不同于传统程序设计的一种新的程序设计范型。它对降低软件的复杂性,改善其重用性和维护性,提高软件的生产效率,有着十分重要的意义。因此面向对象的程序设计被认为是程序设计方法学的一场实质性的革命(在导学中)。2.面向对象(O-O)程序设计是一种新的程序设计范型。这种范型的主要特征是:程序=对象+消息面向对象程序的主要结构特点是:第一,程序一般由类的定义和类的使用两部分组成;第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接收到后,启动有关方法完成相应操作。3.现实世界中,对象一般可以表示为:属性+行为现实世界中的对象,具有以下特性:(1)每一个必须有一个名字以区别于其他对象;(2)用属性来描述对象的某些特征;(3)有一组操作,每组操作决定对象的一种行为;(4)对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其他对象的行为。4.在现实世界中,类是一组具有相同属性和行为的对象的抽象。类与对象的关系是抽象和具体的关系。在C++面向对象的程序设计中,把类中的属性称为数据(数据成员),类中的操作是用函数(函数成员)来实现的。5.面向对象程序设计的基本特征:抽象性、封装性、继承性和多态性(1).抽象是通过特定的实例(对象)抽取共同性质后形成概念的过程。(2).在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。(3).继承机制允许派生类继承基类的数据和操作(即数据成员和成员函数),也就是说,允许派生类使用基类的数据和操作。同时派生类还可以增加新的操作和数据。从继承源上分,继承分为单继承和多继承。(4).面向对象系统的多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。如可以有同名函数【第2章】6.简单的C++程序例2.1计算两个整数之和sum.cpp#includeiostream//系统头文件usingnamespacestd;intmain()//主函数{intx,y,sum;//定义三个整型变量这两行也可用一行代替:#includeiostream.h面向对象C++程序设计总复习第2页共22页cout输入二个数:'\n';//界面:提示用户输入二个数cinx;//从键盘输入变量x的值ciny;//从键盘输入变量y的值sum=x+y;cout“x+y=sum'\n';//输出return0;}C++新行(回车换行)'\n’或endl(ENDL的小写)新的输入/输出:老:scanf新:cin是标准输入流,在程序中用于代表标准输入设备,即键盘。运算符“”表示向右老:printf新:cout是标准输出流,在程序中用于代表标准输出设备,即屏幕。运算符“”表示向左使用cin或cout进行I/O操作时,在程序头中头文件#includeiostream.h7.函数原型(函数声明)(重点)返回值类型函数名(参数表);例2.7intadd(inta,intb);intadd(int,int);使用在前,定义在后,要先声明。若定义在前,使用在后,就可不必声明。8.函数重载:C++中,只要函数的參数的类型不同,或者參数个数不同,或者二兼有之,几个函数可以用相同的函数名。称为函数重载9.C语言用函数malloc()和free()动态分配内存和释放动态分配的内存。C++使用运算符new和delete能更好、更简单地进行内存的分配和释放。10.引用(重点)引用可为变量起别名,它主要用作函数参数以及函数的返回类型。引用有三种:(1)有变量的引用、(2)参数引用和(3)返回值引用。11.1、&取地址运算符取西瓜皮2、*指针运算符(间接访问运算符)挖西瓜馕【第3章】12.C++中说明(类的定义)类的一般形式为clsaa类名{[private:](可省略)私有段数据成员和成员函数protected:保护段数据成员和成员函数public:公有段数据成员和成员函数};面向对象C++程序设计总复习第3页共22页成员函数的定义方式:第一种方式是在类定义中只给出成员函数的原形,而成员函数体在类的外部定义。第二种方式是将成员函数定义在类的内部,即定义为内置函数。(1)隐式定义(2)显式定义13.类对象中成员的引用(使用、访问都是同一个意思)不论是数据成员,还是成员函数,只要是公有的,就可以被外部函数直接引用,引用的一般格式是:对象名.数据成员名和对象名.成员函数名(实参表)外部函数不能引用对象的私有成员总之:类成员的访问属性:类的公有成员不但可以被类中成员函数访问,还可以在类的外部通过类的对象进行访问。类的私有成员只能被类中成员函数访问,不能在类的外部通过类的对象进行访问。14.构造函数的特点:(1)构造函数的名字必须与类名相同,否则编译程序将把它当作一般的成员函数来处理。(2)构造函数没有返回值,在声明和定义构造函数时,是不能说明它的类型的的,甚至说明为void类型也不行。(3)构造函数也是成员函数,与普通的成员函数一样,构造函数的函数体可写在类体内,也可写在类体外。(4)一般不提倡在构造函数中加入与初始化无关的内容(5)构造函数一般声明为公有成员。它不需要用户来调用,而是在建立对象时自动执行的。(6)在实际应用中,通常需要给每个类定义构造函数。如果没有给类定义构造函数,则编译系统自动地生成一个缺省的构造函数。complex::complex(){}//不能带任何参数。(7)定义构造函数时,也可以是不带参数的。15.C++允许重载构造函数,这些构造函数之间名字相同,而以它们所带参数的个类或类型的不同而区分。带默认参数的构造函数。16.对象的赋值和拷贝构造函数,其作用是,在建立新对象时,使用一个已经存在的对象去初始化这个新对象。piontp2(p1);17.析构函数也是特殊成员函数,用于释放对象。(1)析构函数与构造函数名字相同,但它前面必须加一个波浪号(~)。(2)析构函数没有参数,也没有返回值,而且不能重载,因此在一个类中只能有一个析构函数。(3)当撤消对象时,编译系统会自动地调用析构函数。18.可以用类定义对象数组:类名数组名[元素个数];19.当需要时,可以用类定义对象指针。对象指针就是用于存放对象地址的变量类名*对象指针名;20.类的封装性,使类只能通过成员函数来访问私有成员。这是好事但也有一定的限制太死的感觉。能否开个小孔口,必要时作个破例,使外界函数、别的类的个别成员函数、甚致别的类的所有成员函数可访问某个类的私有成员。这个方法称为友元。21.友元包括友元函数和友元类面向对象C++程序设计总复习第4页共22页(1)友元函数分为:非成员函数作友元和别的类的成员函数作友元(2)友元类:在类定义时,在类内说明一个类(该类前面已定义),前加上friend表示该整个的一个类是本类的友元类。友元类的所有成员函数可以访问它自己类私有成员又可本类的私有成员。【第4章】22.派生类的定义基类:class基类名{类的内容};声明派生类:class派生类名:继承方式基类名{//派生类新增的数据成员和函数成员};继承方式可为公有继承(用public)、私有继承(用private或缺省)和保护继承(用protected)23.基类成员在派生类中的访问属性(重点)基类中的成员在公有派生类中的访问属性在私有派生类中的访问属性在保护派生类中的访问属性私有成员不可直接访问不可直接访问不可直接访问公有成员公有私有保护保护成员保护私有保护24.派生类对基类成员的访问规则(重点)(1)私有继承的访问规则基类中的成员私有成员公有成员保护成员访问方式内部访问对象访问不可访问不可访问可访问不可访问可访问不可访问(2)公有继承的访问规则基类中的成员私有成员公有成员保护成员访问方式内部访问对象访问不可访问不可访问可访问可访问可访问不可访问(3)保护继承的访问规则基类中的成员私有成员公有成员保护成员访问方式内部访问对象访问不可访问不可访问可访问不可访问可访问不可访问25.派生类的构造函数和析构函数(1)派生类的构造函数和析构函数执行顺序无论何中派生,当创建派生类对象时,首先执行基类的构造函数,随后再执行派生类的构造函数;当撤消派生类对象时,则先执行派生类的析构函数,随后再执行基类的析构函数。(2).派生类的构造函数和析构函数的构造规则面向对象C++程序设计总复习第5页共22页简单的派生类的构造函数一般格式为:派生类名(参数总表):基类名(参数表){派生类新增成员的初始化语句}其中基类构造函数参数,来源于派生类的构造函数的参数总表,也可以用常数值。26.从多个类,派生出一个类,也即一个类从多个基类继承称为多重继承。多重继承的声明格式如下:class派生类名:继承方式1基类名1,...,继承方式n基类名n{派生类新增的数据成员和成员函数};派生类继承了基类1到基类n的所有数据成员和函数成员,其访问属性规则与单继承情况一样,多继承可看成单一继承的扩展。27.如果一个派生类有多个直接基类,而这些直接基类又有一个相同的基类,则在最低层的派生类中会保留这个间接的共同基类数据成员的多份同名成员。在访问这些同名成员时会产生二义性,才考虑虚基类,虚基类在派生类中声明的形式:class派生类名:virtual继承方式基类名{//............};经过这样的声明后,当基类通过多条派生路径被一个派生类继承时,该派生类只继承该基类一次,也就是说,基类成员无“副本”【第5章】28.编译时的多态性与运行时的多态性静态联编(前期联编)静态联编要求在程序编译时就知道调用哪个函数,就决定如何实现某一动作。动态联编(后期联编、滞后联编)一直要到程序运行时才能确定调用哪个函数。系统在运行时才动态完成的联编。静态联编支持的多态性称为编译时多态性,也称静态多态性。在C++中,编译时多态性是通过函数重载和运算符重载实现的。动态联编支持的多态性称为运行时多态性,也称动态多态性。在C++中,运行时多态性是通过继承和虚函数来实现的。29.运算符重载:C++除了可以对函数重载外,还可以对大多数运算符实施重载。外部普通函数类的友元函数是类的成员函数成员运算符函数定义的语法形式成员运算符函数的原型在类的内部声明格式为:classX{//...返回类型operator运算符(形参表);//...};30.虚函数的引入,基类的指针可以指向它的公有派生类的对象,用“指针”才有虚函数的问题。面向对象C++程序设计总复习第6页共22页引入派生类后,由于派生类是由基类派生出来的,因此指向基类的指针和指向派生类的指针是相关的:(1)基类的指针可以指向它的公有派生类的对象。但不允许指向它的私有派生类的对象。(2)派生类的指针不允许指向它的基类的对象。(3)基类的指针指向它的公有派生类的对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的新成员。31.有时在程序设计时,使用对象指针的目的是为了动态和灵活,即当指针指向不同对象(基类对象或派生类对象)时,能分别调用不同类的成员函数。如果将函数说明为虚函数,就能实现这种动态调用的功能。虚函数的定义是在基类中进行的:virtual函数类型函数名(形参表){函数体}32.纯虚函数的一般形式如下:virtual函数类型函数名(参数表)=0;如果一个类至少有一个纯虚函数,那么就称该类为抽象类【第6章】33.模板的概念模板是C++语言的一个重要特性。模板是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了代码重用,使得一段程序可以用于处理多种不同类型的对象,大幅度地提高程序设计的效率。34.函数模板和类模板(1).函数模板与模板函数所谓函数模板,就是写一个函数模子,用这个模子套印出许多功能相同,参数类型和返回类型不同的函数。模板函数:函数模板实例化后的具体函数。(2)类模板和模板类类模
本文标题:面向对象程序设计总复习资料(2013夏)
链接地址:https://www.777doc.com/doc-1980932 .html