《面向对象程序的设计》复习资料全.docx

上传人:b****3 文档编号:3751828 上传时间:2022-11-25 格式:DOCX 页数:83 大小:45.31KB
下载 相关 举报
《面向对象程序的设计》复习资料全.docx_第1页
第1页 / 共83页
《面向对象程序的设计》复习资料全.docx_第2页
第2页 / 共83页
《面向对象程序的设计》复习资料全.docx_第3页
第3页 / 共83页
《面向对象程序的设计》复习资料全.docx_第4页
第4页 / 共83页
《面向对象程序的设计》复习资料全.docx_第5页
第5页 / 共83页
点击查看更多>>
下载资源
资源描述

《面向对象程序的设计》复习资料全.docx

《《面向对象程序的设计》复习资料全.docx》由会员分享,可在线阅读,更多相关《《面向对象程序的设计》复习资料全.docx(83页珍藏版)》请在冰豆网上搜索。

《面向对象程序的设计》复习资料全.docx

《面向对象程序的设计》复习资料全

《面向对象程序设计》课程期末复习资料

《面向对象程序设计》课程讲稿章节目录:

第一章、C++基础(16个知识点)

01计算机求解问题的过程

02编程的步骤

03程序设计方法

04程序设计基本概念

05C++程序集成开发环境简介

06C++程序实例

07C++源程序的组成

08C++源程序的组成元素

09C++与C的主要差异–符号常量和标准输入输出流

10C++与C的主要差异–联函数

11C++与C的主要差异–带默认形参值的函数

12C++与C的主要差异–函数重载

13C++与C的主要差异–动态存分配和释放

14C++与C的主要差异–动态存分配和释放程序实例

15C++与C的主要差异–引用和返回引用的函数

16C++与C的主要差异–函数的引用调用

第二章、面向对象方法(27个知识点)

01面向对象方法基本概念–对象、类、实例和消息

02面向对象方法基本概念–封装、继承和多态

03类的定义

04构造函数

05对象的定义和访问

06对象的定义和访问程序实例

07类成员的访问控制

08类成员的访问控制程序实例

09析构函数

10拷贝构造函数

11类声明和类实现的分离

12类的常量成员

13类的静态数据成员

14类的静态成员函数

15this指针

16类的友元

17类的对象成员–基本概念

18类的对象成员–对象成员的声明、初始化和访问

19自定义类的运算符重载概述

20类成员函数形式的运算符重载

21类友元形式的运算符重载

22赋值运算符和下标运算符重载程序实例

23类设计实例

24面向对象方法程序实例–类和对象的基本定义、构造函数和析构函数

25面向对象方法程序实例–静态成员和多文件结构

26面向对象方法程序实例–友元和运算符重载

27面向对象方法程序实例–对象成员

第三章、继承与多态(17个知识点)

01继承概述

02派生类定义

03派生类构造函数和析构函数

04派生类构造函数和析构函数程序实例

05函数重定义和派生类的继承方式

06多重继承下的派生类定义

07多重继承中的二义性问题

08虚拟继承和虚基类

09类型兼容

10多态性的概念和实现原理

11虚函数

12虚析构函数

13纯虚函数和抽象类

14继承与多态程序实例–派生类定义和函数重定义

15继承与多态程序实例–多重继承

16继承与多态程序实例–虚拟继承和虚函数

17继承与多态程序实例–抽象类和纯虚函数

第四章、输入输出流(16个知识点)

01输入输出流概述

02输入输出流对象

03输入输出流的插入和提取运算符

04输入输出流的插入和提取运算符程序实例

05输入输出流的put函数

06输入输出流的get函数

07输入输出流的getline函数

08输入输出流的write函数

09输入输出流的read函数

10输入输出流的write、read函数程序实例

11文件随机读写概述和相关函数

12文件随机读写程序实例

13自定义类型数据的标准输入输出和文本文件输入输出

14自定义类型数据的二进制文件输入输出

15输入输出流程序实例–输入输出流操作

16输入输出流程序实例–插入运算符和提取运算符重载

第五章、模板(7个知识点)

01函数模板的定义和使用

02函数模板程序实例

03类模板的定义

04类模板的使用

05类模板的静态成员

06模板程序实例–函数模板

07模板程序实例–类模板

一、客观部分:

(单项选择、多项选择、不定项选择、判断)

(一)、选择部分

1、面向对象方法的基本观点是一切系统都是由(C)构成的。

A、结构B、模块C、对象D、类

★考核知识点:

面向对象方法基本概念–对象、类、实例和消息

参见讲稿章节:

2-01

附1.1.1(考核知识点解释):

面向对象方法的基本观点是一切系统都是由对象构成的,它们的相互作用、相互影响,构成了大千世界的各式各样系统。

2、下列关于主函数的叙述中正确的是(B)。

A、一个程序可以有多个主函数

B、程序从主函数开始执行

C、一个程序可以没有主函数

D、主函数是一个特殊的函数,因此其结构与其他函数不同

★考核知识点:

C++源程序的组成

参见讲稿章节:

1-07

附1.1.2(考核知识点解释)

一个C++程序一般由多个函数组成。

这些函数可以是用户根据需要编写的自定义函数,也可以是直接使用系统提供的标准库函数。

函数体用一对花括号“{”和“}”括起来。

任何一个程序必须有且仅有一个主函数main,程序从主函数开始执行。

3、有关带默认参数的函数的描述正确的是(D)。

A、只能在函数定义时设置默认参数值

B、只能在函数声明时设置默认参数值

C、函数调用时,必须使用默认的参数值,不能给出新的实参值

D、设置默认参数时,应该设置最右边的若干个参数的默认值

★考核知识点:

C++与C的主要差异–带默认形参值的函数

参见讲稿章节:

1-11

附1.1.3(考核知识点解释)

在调用函数时,需要针对函数中的每一个形参给出对应的实参。

C++中允许在函数定义或函数声明时给出默认的形参值。

在调用函数时,对于有默认值的形参,如果没有给出相应的实参,则函数会自动使用默认形参值;如果给出相应的实参,则函数会优先使用传入的实参值。

默认形参值可以在两个位置指定:

如果有函数声明,则应在函数声明处指定;否则,直接在函数定义中指定。

默认形参值必须严格按照从右至左的顺序进行指定。

4、有关重载函数的描述正确的是(C)。

A、函数名相同的函数就是重载函数

B、函数名相同但返回值类型不同的函数就是重载函数

C、函数名相同但参数个数或类型不同的函数就是重载函数

D、函数功能相同的函数就是重载函数

★考核知识点:

C++与C的主要差异–函数重载

参见讲稿章节:

1-12

附1.1.4(考核知识点解释)

C++允许不同的函数具有相同的函数名,这就是函数重载。

当调用一个函数时,除了要写出函数名,还要根据函数的形参列表传递实参值。

对于函数名相同的多个函数,要在调用时能够区分开到底要调用哪个函数,只能根据传递实参在数量或类型上的不同来进行判断。

也就是说,函数名相同的函数形参列表不能完全一样,否则会因无法区分而报错。

5、假设堆存分配均成功,则下面程序段完全正确的是(A)。

A、int*p=newint(3);cout<<*p;deletep;

B、int*p=newint[5]={1,2,3,4,5};for(inti=0;i<5;i++)cout<

C、int*p=newint[5];for(inti=0;i<5;i++,p++){*p=i;cout<<*p;}delete[]p;

D、以上程序段均正确

★考核知识点:

C++与C的主要差异–动态存分配和释放

参见讲稿章节:

1-13

附1.1.5(考核知识点解释)

在C++中,使用new和delete这两个关键字完成堆存分配和释放的操作。

堆存分配new的用法为:

new数据类型[表达式];其中,表达式可以是常量,也可以是变量,其作用与声明数组时[]里的表达式一样,用于指定元素数目。

如果只申请一个元素的空间,那么[表达式]部分可以不写:

new数据类型;对于只申请一个元素空间的情况,在分配存的同时还可以进行存初始化工作:

new数据类型(表达式);其中,表达式确定了分配的存中初始存储的数据。

堆存释放delete的用法为:

delete[]p;如果p所指向的堆存只包含一个元素,那么还可以将[]省掉,即:

deletep;必须使用指针保存分配的堆存首地址,这是由于delete须根据首地址进行堆存释放,如果不知道首地址则无法释放存,从而造成存泄漏。

6、变量的引用,其含义是指该变量的(C)。

A、值B、类型C、别名D、地址

★考核知识点:

C++与C的主要差异–引用和返回引用的函数

参见讲稿章节:

1-15

附1.1.6(考核知识点解释)

引用就是别名,变量的引用就是变量的别名,对引用的操作就是对所引用变量的操作。

7、已知“inta=10,b=8;int&r=a;r=b;cout<

A、10,8,10B、10,8,8C、8,8,10D、8,8,8

★考核知识点:

C++与C的主要差异–引用和返回引用的函数

参见讲稿章节:

1-15

附1.1.7(考核知识点解释)

引用就是一个别名,声明引用不会再为其分配存空间,而是与所引用对象占据同一片存空间。

因此,对引用的操作与对所有引用对象的操作效果完全一样。

8、已知“inta=10,*p;int*&r=p;r=&a;*p=20;cout<

A、10B、20C、不确定值D、程序有错误

★考核知识点:

C++与C的主要差异–引用和返回引用的函数

参见讲稿章节:

1-15

附1.1.8(考核知识点解释)

引用就是一个别名,声明引用不会再为其分配存空间,而是与所引用对象占据同一片存空间。

因此,对引用的操作与对所有引用对象的操作效果完全一样。

可以为指针变量声明引用,其声明形式为:

数据类型*&引用名=指针变量名;

9、下列关于类和对象的叙述中,错误的是(A)。

A、一个类只能有一个对象B、对象是类的具体实例

C、类是某一类对象的抽象D、类和对象的关系是一种数据类型与变量的关系

★考核知识点:

面向对象方法基本概念–对象、类、实例和消息

参见讲稿章节:

2-01

附1.1.9(考核知识点解释)

类是现实世界中客观事物的抽象,即将具有相似静态属性和动态行为的对象集合归纳为一个类。

类是用户自定义的数据类型,与基本数据类型一样,需要声明类数据类型的变量,即对象,通过对一个个的实际对象实施不同的操作,来解决问题。

声明对象的过程叫做类的实例化。

10、有如下类声明:

classSample{intx;};

则Sample类成员x是Sample类的(C)。

A、公有数据成员B、保护数据成员

C、私有数据成员D、以上选项都不正确

★考核知识点:

类成员的访问控制

参见讲稿章节:

2-07

附1.1.10(考核知识点解释)

类中可以出现多个访问说明符,每个访问说明符可以出现多次,不同的访问说明符出现的顺序没有限制。

如果没有指明是哪种访问级别,C++编译系统默认为私有(private)成员。

11、C++中,关于构造函数和析构函数,正确的描述是(C)。

A、在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数

B、构造函数和析构函数均可以重载

C、已知类Student以及Student*p;在使用p=newStudent;时自动调用无参构造函数创建动态对象,在deleltep;时自动调用析构函数释放动态对象

D、构造函数和析构函数都可以成为虚函数

★考核知识点:

构造函数、析构函数

参见讲稿章节:

2-04,2-09

附1.1.11(考核知识点解释)

在C++中,对象的初始化工作是由构造函数来完成的。

构造函数是一种特殊的成员函数,C++规定可以在类声明一个或多个构造函数,以满足对象多样性的初始化需要。

构造函数具有如下特征:

①构造函数名与类名相同。

②构造函数无任何函数返回类型说明。

③一个新的对象被创建时(通过对象声明语句或使用new运算符在堆区创建动态对象),属于该对象的构造函数被编译系统自动调用,完成该对象数据成员的初始化工作。

④如果在类声明中没有给出构造函数,系统会自动给出一个默认的无参构造函数:

<类名>(){}

⑤如果在类中声明了多个构造函数,这就是构造函数的重载。

要求这些构造函数要有不同的参数表,系统自动调用构造函数时按照函数重载的规则选择其中的一个构造函数。

在对象的生存期结束时,有时也需要执行一些操作。

这些工作就可以放在析构函数中。

析构函数是一个特殊的由用户定义的公有成员函数,析构函数具有如下特征:

①析构函数名为:

~<类名>,如~IntArray。

②构造函数无任何函数返回类型说明。

③析构函数无参数,所以不能被重载。

④如果在类声明中没有给出析构函数,系统会自动给出一个默认的析构函数:

~<类名>(){}

⑤当对象的生命周期结束及用delete释放动态对象时,系统自动调用析构函数完成对象撤销前的处理。

12、在类的定义中,用于对类的数据成员进行初始化并执行其他部管理操作的函数是(C)。

A、友元函数B、虚函数C、构造函数D、析构函数

★考核知识点:

构造函数

参见讲稿章节:

2-04

附1.1.12(考核知识点解释)

一个新的对象被创建时(通过对象声明语句或使用new运算符在堆区创建动态对象),属于该对象的构造函数被编译系统自动调用,完成该对象数据成员的初始化工作。

13、对于拷贝构造函数,正确的描述是(A)。

A、在C++语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数

B、必须为每个类定义拷贝构造函数

C、如果要使用拷贝构造函数,则必须在类中先定义

D、当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函数

★考核知识点:

拷贝构造函数

参见讲稿章节:

2-10

附1.1.13(考核知识点解释)

拷贝构造函数有如下特征:

(1)拷贝构造函数名与类名相同,形参只有一个,是对象的引用,所以,不能重载拷贝构造函数。

拷贝构造函数的原形为:

<类名>(<类名>&对象名);

(2)拷贝构造函数无任何函数返回类型说明。

(3)如果在类声明中没有给出拷贝构造函数,系统会自动给出一个默认的拷贝构造函数,该拷贝构造函数只进行对象数据成员间的对位拷贝,即所谓的“浅拷贝”。

(4)在某些情况下,用户必须在类定义中给出一个显式的拷贝构造函数,以实现用户指定的用一个对象初始化另一个对象的功能,即所谓的“深拷贝”。

(5)在以下3种情况下,系统会自动调用拷贝构造函数:

①当使用下面的声明语句用一个已存在的对象初始化一个新对象时,系统会自动调用拷贝构造函数:

<类名><新对象名>(<已存在对象名>);

<类名><新对象名>=<已存在对象名>;

②对象作为实参,在函数调用开始进行实参和形参结合时,会自动调用拷贝构造函数,完成由已知的实参对象初始化形参新对象的功能。

③如果函数的返回值是类的对象,在函数调用完成返回时,系统自动调用拷贝构造函数,用return后面的已知对象来初始化一个临时新对象(所创建的临时对象只在外部表达式围有效,表达式结束时,系统将自动调用析构函数撤销该临时对象)。

14、有关静态成员的描述错误的是(D)。

A、某个类的静态数据成员由该类的所有对象所共享

B、类的公有静态数据成员既可以用类的对象访问,也可以直接用作用域运算符“:

:

”通过类名来访问

C、静态数据成员既可以是私有成员,也可以是公有成员

D、类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作

★考核知识点:

类的静态数据成员

参见讲稿章节:

2-13

附1.1.14(考核知识点解释)

在类的成员前如果加上关键字static,这种成员就是类的静态成员。

类的静态成员包括静态数据成员和静态成员函数。

类的静态成员的特点是:

静态成员属于类,不属于任何对象。

无论有多少对象或没有对象,静态成员都只有一份存于公用存中,被该类的所有对象共享。

在类定义中的数据成员声明前加上关键字static,就使该数据成员成为静态数据成员。

静态数据成员可以是public(公有)、private(私有)或protected(保护)的。

在下面定义的Account类中,m_rate被声明为私有静态成员。

在类中声明的静态数据成员属于引用性说明,并不实际分配存。

在创建对象时,会为对象的数据成员分配存储空间。

但由于静态数据成员不属于任何对象,所以在创建对象时也不会为该类的静态数据成员分配存储空间。

所以,类设计者需要在类外对静态数据成员进行定义。

静态数据成员的定义形式如下:

<类型><类名>:

:

<静态数据成员名>[=<初值>];

类的静态数据成员不属于任何类,类的公有静态数据成员的一般访问形式是:

<类名>:

:

<静态数据成员名>

也可以是:

<对象名>.<静态数据成员名>

<对象指针>-><静态数据成员名>

后两种访问方式中的“对象名”或“对象指针”只起到类名的作用,与具体对象无关。

如果成员函数被声明为static的,它就是静态成员函数。

像静态成员数据一样,静态成员函数与具体对象无关。

静态成员函数不能访问一般的数据成员,它只能访问静态数据成员,也只能调用其他的静态成员函数。

对类的静态成员函数的调用形式通常是:

<类名>:

:

<静态成员函数调用>

可以用成员访问操作符点(.)和箭头(->)为一个类对象或指向类对象的指针调用,只是,这时候使用的只是对象的类型,与具体对象无关。

15、如果类A被说明成类B的友元,则(B)。

A、类A的成员函数不得访问类B的所有成员

B、类A的成员函数可以访问类B的所有成员

C、类A的成员即类B的成员

D、类B的成员即类A的成员

★考核知识点:

类的友元

参见讲稿章节:

2-16

附1.1.15(考核知识点解释)

将一个类声明为另一个类的友类的语法形式为:

friend<友类名>;

friendclass<友类名>;

将A类声明为B类的友类。

声明后,A类的任何成员函数都有权访问B类中的任何成员,包括私有成员和保护成员。

16、下列关于this指针的说法,正确的是(D)。

A、this指针一定指向常量型数据

B、this指向的数据不可更改

C、静态成员函数中也可以访问this指针

D、this指针本身可直接作为成员函数的返回值

★考核知识点:

this指针

参见讲稿章节:

2-15

附1.1.16(考核知识点解释)

每个类成员函数都含有一个指向被调用对象的指针,这个指针被称为this指针。

this指针是一个隐含于每一个非静态成员函数中的特殊指针,就是成员函数的一个类指针类型的形参。

当对一个对象调用非静态成员函数时,编译程序先将该对象的地址传递给成员函数的this指针,以及完成其他的参数传递,然后再进入成员函数部进行处理。

在成员函数部存取数据成员或调用其他成员函数时,都是通过this指针隐式地引用它所指向的对象的成员数据和成员函数。

事实上,也可以通过this指针显式引用它所指向对象的成员数据和成员函数。

由于有了this指针的存在,使得类中相同的成员函数会根据this指针指向对象的不同而操作不同对象的数据成员。

类的静态成员函数没有this指针。

这是因为静态成员函数为类的所有对象所共有,不属于某一个对象。

一般情况下,this指针隐式使用就可以了。

但某些情况下需要显式使用。

下面是需要显式使用this指针的两种情况:

(1)在类的非静态成员函数中返回类对象本身的时候,直接使用“return*this;”。

(2)另外一种情况是当参数与成员变量名相同时。

17、派生类中的成员不能访问基类中的(A)。

A、私有成员B、公有成员C、保护成员D、以上都可以

★考核知识点:

函数重定义和派生类的继承方式

参见讲稿章节:

3-05

附1.1.17(考核知识点解释)

以公有方式继承时,基类的公有成员和保护成员的访问控制方式在派生类中保持不变,仍作为派生类的公有成员和保护成员,基类的私有成员在派生类中不能直接访问。

以私有方式继承时,基类的公有成员和保护成员在派生类中都作为私有成员,基类的私有成员在派生类中不能直接访问。

以保护方式继承时,基类的公有成员和保护成员在派生类中都作为保护成员,基类的私有成员在派生类中无法直接访问。

18、基类的(B)在私有继承时在派生类中为私有成员函数,在公有和保护继承时在派生类中为保护成员函数。

A、私有成员函数B、保护成员函数

C、公有成员D、保护数据成员

★考核知识点:

函数重定义和派生类的继承方式

参见讲稿章节:

3-05

附1.1.18(考核知识点解释)

以公有方式继承时,基类的公有成员和保护成员的访问控制方式在派生类中保持不变,仍作为派生类的公有成员和保护成员,基类的私有成员在派生类中不能直接访问。

以私有方式继承时,基类的公有成员和保护成员在派生类中都作为私有成员,基类的私有成员在派生类中不能直接访问。

以保护方式继承时,基类的公有成员和保护成员在派生类中都作为保护成员,基类的私有成员在派生类中无法直接访问。

19、类型兼容是指在基类对象可以出现的地方,都可以使用公有派生类的对象,已知:

classBaseClass

{//…};

classDerivedClass:

publicBaseClass

{//…};

BaseClassb,*pb;

DerivedClassd,*pd;

下面不属于类型兼容的是(C)。

A、b=d;B、BaseClass&bb=d;

C、pd=&b;D、pb=&d;

★考核知识点:

类型兼容

参见讲稿章节:

3-09

附1.1.19(考核知识点解释)

类型兼容是指在基类对象可以出现的任何地方,都可以用公有派生类的对象来替代。

类型兼容所指的是如下三种情况:

(1)派生类对象可以赋值给基类对象;

(2)派生类对象可以初始化基类的引用;

(3)基类指针可以指向派生类对象。

20、以下说确的是(C)。

A、重定义函数就是派生类的构造函数

B、重定义函数就是派生类的析构函数,要求同名

C、一个虚析构函数的版本被调用执行后,接着就要执行其基类版本

D、基类和派生类都分别给出了一个虚函数的不同版本

★考核知识点:

虚析构函数

参见讲稿章节:

3-12

附1.1.20(考核知识点解释)

在调用派生类对象的析构函数后,会自动调用基类对象的析构函数来释放基类中定义的指针成员。

21、下列关于虚函数的说明中,正确的是(B)。

A、从虚基类继承的函数都是虚函数

B、虚函数不得是静态成员函数

C、只能通过指针或引用调用虚函数

D、抽象类中的成员函数都是虚函数

★考核知识点:

虚析构函数

参见讲稿章节:

3-12

附1.1.21(考核知识点解释)

只有类的成员函数才能声明为虚函数。

因为虚函数只适用于有继承关系的类对象,所以普通函数不能声明为虚函数。

静态成员函数不能是虚函数,因为静态成员函数不受限于某个对象。

联函数不能是虚函数,因为联函数不能在运行中确定其位置。

即使虚函数放在类的部定义,编译时,仍将其看作是非联的。

构造函数不能是虚函数。

因为构造时,对象还是一片未定型的空间。

只有在构造完成后,对象才能成为一个类的名副其实的实例。

22、友元重载运算符obj1>obj2被C++编译器解释为(A)。

A、operator>(obj1,obj2)B、>(obj1,obj

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1