《面向对象程学设计》复习大纲

上传人:第*** 文档编号:34021229 上传时间:2018-02-20 格式:DOC 页数:20 大小:317KB
返回 下载 相关 举报
《面向对象程学设计》复习大纲_第1页
第1页 / 共20页
《面向对象程学设计》复习大纲_第2页
第2页 / 共20页
《面向对象程学设计》复习大纲_第3页
第3页 / 共20页
《面向对象程学设计》复习大纲_第4页
第4页 / 共20页
《面向对象程学设计》复习大纲_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《《面向对象程学设计》复习大纲》由会员分享,可在线阅读,更多相关《《面向对象程学设计》复习大纲(20页珍藏版)》请在金锄头文库上搜索。

1、第 1、2 章 绪论与 C+对 C 的扩充1.类与对象的基本概念:类是对一组具有相同属性(或称状态,用数据表示)和行为(或称操作、方法,用函数实现)的对象的抽象,一个类所包含的方法和数据描述了一组对象的共同属性和行为。对象则是类的具体化,是类的实例。在面向对象的程序设计中,总是先声明类,再由类生成其对象,类是建立对象的“模板” ,按照这个模板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。2.面向对象程序设计方法的 3 个主要特点:(1)封装性:(2)继承性:体现在类的层次关系中,派生的子类拥有父类中定义的数据和方法。子类直接继承父类的全部描述,同时可修改和扩充,并且继承具有传递性。

2、(3)多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性,用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,这样,同一消息即可调用不同的方法。3.C+对 C 的补充( 1)输入输出头文件:#includeusing namespace std;/使用命名空间 std( 2) const 修饰符:指向常量的指针:const int *p;int *u;*p=10; / 因为 p 指向的是常量,其所指空间的内容不可修改p=u; /常指针:int d = 1;int* const w = *w=2; / OK

3、w=p; / 因为 p 是一个常指针,其所指空间地址不可修改( 3)函数的使用形参带默认值:在调用函数时,可以不用给带默认值的形参传递实参。如:void myfunc( double d=0.0) myfunc(198.234); / pass an explicit valuemyfunc( ); / let function use defaultconst 修饰形参:表示此参数在其所在的函数内为常量,即不可修改。内联/内嵌函数:在函数声明或定义的前面加上关键字 “inline”,该函数就被声明为内联函数。函数重载 两或两个以上的函数使用同一个函数名,称为函数重载。 函数重载的条件: 函数

4、参数的类型或个数不同,即函数原型的参数列表不同 只有函数返回值类型不同,不能重载 函数重载与参数带默认值的函数一起使用时,有可能引起二义性,使用时要谨慎。(4)new 和 delete 运算符new 运算符:用于向系统申请动态存储空间,并返回正确类型的指针。申请失败时,则返回 0 指针,使用 new 的语法格式: 指针变量 =new 数据类型标识符 (初值 )/元素个数 delete 运算符:使用 new 申请得到的空间必须使用 delete 运算符进行释放,使用格式:delete 指针变量名第 3 章 类与对象1.类的定义:类的定义包括类的说明和类的实现两大部分。说明部分提供了对该类所有数据

5、成员和成员函数的描述;实现部分则提供了所有成员函数的实现代码。( 1)类定义的格式:class private:protected:public:;( 2)说明:class 是定义类的关键字,类名由用户自己定义,但应满足标识符的命名规则。与 struct 相比,类的说明部分添加了新内容:成员函数的说明以及访问权限控制符:public、 protected、private。 private 部分:该部分成员只允许被本类的成员函数访问或调用,在类外不能被直接访问。一般情况下,类的数据成员多声明为 private 成员; public 部分:该部分成员允许被本类或其他类的成员函数(通过对象)访问或调

6、用。public 成员多为成员函数,用来向外界提供一个接口,外界只能通过这个接口才可以实现对 private 成员的访问;一个类的定义中应该含有 public 权限的成员,否则该类的定义无意义。 protected 部分:该部分成员不能在类外访问,只允许被本类的成员函数及其子类(派生类)的成员函数访问或调用。 当类成员未指明是哪部分时,默认为 private 成员。 类中的每个成员只能被指定一种特定的访问控制权限。公有部分、私有部分和保护部分可以以任意顺序出现,且并非同时出现。类的说明部分以分号结束。( 3)成员函数的定义:在类的定义体外部定义成员函数,在类的定义体中声明成员函数定义时,需在函

7、数名之前加上其所属的类名和作用域限定符“:” ,没加类名的函数默认为非成员函数(全局函数) 。在类的定义体内部定义成员函数,系统自动使该成员函数成为内联函数。在类定义体外部定义的成员函数若为内联函数,需用 inline 关键字指明。( 4)类成员的访问:类的数据成员和成员函数属于该类的类作用域(即使成员函数定义在类体之外) ,非成员函数在文件作用域中定义。在类作用域中,类成员可由该类的所有成员函数直接访问;在类作用域外,访问类成员是通过一个对象的句柄实现的,可以是对象名、对象引用或对象指针。利用对象的句柄访问类成员的运算符与访问结构体成员的运算符相同。2.对象对象是类的一个实例,当定义一个类时

8、,只定义了这种数据类型,当程序中定义了数据类型的变量时,该变量就是该类的对象(或类的实例) 。( 1)类对象的定义方法:定义类的同时定义对象;定义类后定义对象,单独定义对象的一般格式: 类名 对象名表;( 2)对象的指针与引用:指向对象的指针变量的定义格式: 类名 *变量名;对象引用的声明格式: 类名 &引用名 =对象名;( 3)访问对象成员的方法:格式 1: 对象名 .公有成员名 ;格式 2: 指针变量名 -公有成员名 ;注意:在类外不能对类的 private 成员和 protected 成员进行直接访问,可以通过其他 public 成员函数访问。3.this 指针this 指针是一个特殊的

9、隐含指针,它指向当前对象,代表了对象的地址。当对象调用类的非静态成员函数时,编译器会自动将对象本身的地址作为一个隐含参数传递给该函数,这个地址被一个隐含的形参 this 指针获取,函数调用中对对象成员的访问都隐含地被加上了前缀 this-。显式使用 this 指针的语法格式: this-成员名 ;4.构造函数( 1)功能: 创建对象时,实现对数据成员的初始化。( 2)定义格式: 类名(形参列表) 函数体 ( 3)特点:构造函数是类的成员函数,可以直接访问类的所有数据成员。构造函数与类同名,可以是无参函数,也可以是有参函数。构造函数不允许有返回值类型,即使是 void 也不可以。构造函数可以重载

10、,为对象提供不同的初始化方法。构造函数应为公有函数(public) 。声明类对象时,可以在对象名后面的括号中提供初始化值。这些初始化值作为参数传递给类的构造函数。在创建类对象时,系统将自动调用构造函数以实现对数据成员的初始化。若类中没有显式定义构造函数,则编译时系统为该类提供一个默认的构造函数,它仅负责创建对象,不做任何初始化工作。在用默认构造函数创建对象时,若创建的是全局对象或静态局部对象,则对象的默认值是 0,否则对象的初始值不确定。如果用户自定义了构造函数,则编译系统将不会再添加默认的构造函数。构造函数可以包含默认参数,这样即使对象定义时不提供初始值,对象也能利用默认参数进行初始化。一个

11、类只能有一个带默认参数的构造函数,在使用时要防止二义性。( 4)拷贝构造函数功能:拷贝构造函数是一种特殊的构造函数,用于完成基于对象的同一类其他对象的构造及初始化。定义格式:类名( const 类名 &参数名) 函数体 说明:拷贝构造函数只有一个参数,即该类对象的引用;拷贝构造函数的功能是用于实现对象值的拷贝,以完成对新对象的初始化,即用一个对象去构造另一个对象。如果定义类时没有定义拷贝构造函数,编译系统会自动为类添加一个默认的拷贝构造函数,用以完成浅拷贝。如果将对象作为函数的参数,或将对象作为函数的返回值,调用这两类函数时也会自动调用拷贝构造函数。5.析构函数( 1)功能:析构函数是类的一个

12、特殊的成员函数,在类对象的生命期即将结束时由系统自动调用,用来在对象被删除前做一些清理善后工作和数据保存工作。其函数名是在类名前面加上代字符() 。( 2)定义格式: 类名() 函数体 ( 3)特点:析构函数没有返回值,也没有参数。一个类中只能有一个析构函数,没有重载。如果定义类时没有提供析构函数,系统会自动创建一个默认的析构函数。当类对象中分配有动态内存时,则必须为该类提供适当的析构函数,以完成清理工作。6.构造函数和析构函数的调用顺序构造函数和析构函数是由系统自动调用的,函数的调用顺序取决于过程进入和离开对象范围的顺序。一般来说,析构函数的调用顺序与构造函数相反。对象的存储类型可以改变析构

13、函数的调用顺序。全局对象的构造函数在程序开始执行之前调用,在程序结束时调用其析构函数;自动局部对象的构造函数在执行到对象定义时被调用,其析构函数则在离开定义对象的块时被调用;静态局部对象的构造函数在程序执行首次到达对象定义时调用一次,其析构函数在程序结束时被调用。 7.字符串类(1)标准 C+类库预定义了 string 字符串类,它封装了字符串的属性,并提供了访问属性的成员函数。利用 string 可以直接声明字符串变量,并能进行字符串的赋值、相加、比较、查找、插入、删除、取子串等操作。(2)使用 string 类时必须包含头文件 string,并使用命名空间 std。 (3)MFC 中的 C

14、String 类在功能上类似于标准 C+的 string 类。8.静态成员( 1)静态数据成员同一个类的不同对象都有自己的数据成员的空间,它们可以具有不同的属性值(实例属性) ,当类的所有对象需要共享一个成员副本时(类属性) ,可以通过声明静态数据成员来实现。定义格式: static 类型标识符 成员名 ;说明:类的静态数据成员是同一类的所有对象共有的。不管有多少个对象,静态数据成员只有一个,同时可被任何一个同类对象访问。在一个类对象的空间内不包含静态数据成员的空间,其所占的空间不会随对象的产生而分配,或随对象的撤销而消失。它是在程序开始时被分配的,即使没有创建类的一个对象。静态数据成员不具体

15、属于哪一个对象,不能在构造函数或其它成员函数中初始化。必须初始化且在类外进行,其语句不属于任何类、任何函数,其在文件范围内只能初始化一次,格式为:类型标识符 类名 :静态数据成员名 =初值 ;对于在类的 public 部分声明的静态数据成员,可以不使用成员函数而通过对象直接访问,若未定义类的对象,需用类名指明。访问格式为:类名:成员名在 private 和 protected 部分声明的静态数据成员只能通过类的成员函数访问。若未定义类的对象,则需提供一个类的静态成员函数,并在调用时使用类名和作用域运算符指定。( 2)静态成员函数定义格式:其定义与一般成员函数的定义相同,只是在其前面需加上 st

16、atic 修饰符。说明:即使在类没有实例化任何对象时,类的静态数据成员和静态成员函数就已经存在并可使用。与静态数据成员一样,静态成员函数是独立于类对象而存在的,它不与类的对象相关联。静态成员函数没有 this 指针。访问静态成员函数时不需对象,但需在函数名前加上类名和作用域运算符。一个静态成员函数不与任何对象关联,因此,它不能对类中的非静态成员进行默认访问。解决办法:将对象作为静态成员函数的参数,在函数中通过对象访问其非静态成员。9.对象成员(组合类)( 1)定义:组合类是指一个类将其他类对象作为自己的数据成员。其定义格式为:class X 类名 1 成员名 1;类名 2 成员名 2;;( 2)组合类

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

当前位置:首页 > 办公文档 > 解决方案

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