C面向对象程序设计重点复习

合集下载

《C面向对象程序设计》谭浩强版复习总结

《C面向对象程序设计》谭浩强版复习总结

第一章C++ 基础endl 换行并刷新输出流setw(n) 设置字段位数为nhex,oct,dec 十六进制,八进制,十进制表示setfill 定义填充字符setprecision 定义浮点数的精度left,right 左对齐,右对齐showpoint 强制显示小数点以及全部尾部0C++通过给常量命名的方式定义常量:const<数据类型名><常量名>=<表达式>用const定义的标识符常量时,一定要对其初始化。

在说明时进行初始化是对这种常量置值的唯一方法,不能用赋值运算符对这种常量进行赋值。

函数声明的一般形式为函数类型函数名(参数表)函数模板的定义template<typename 或class T>函数定义例子:template<typename T>T max(T a,T b){return(a>b)? a:b;}定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class,用逗号分隔:template <class T1, class T2, class T3>例子:template<class T1, class T2>T1 max(T1 a,T2 b){return (a>b) ? a : (T1)b;}有默认参数的函数:实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端引用定义对变量起另外一个名字(别名alias),这个名字称为该变量的引用。

<类型> &<引用变量名> = <原变量名>;其中原变量名必须是一个已定义过的变量。

如:int max ;int &refmax=max;refmax并没有重新在内存中开辟单元,只是引用max的单元。

max与refmax在内存中占用同一地址,即同一地址两个名字。

C(面向对象的程序设计)考前必背的名词解释和简答题

C(面向对象的程序设计)考前必背的名词解释和简答题

C++(面向对象的程序设计)考前必背的名词解释和简答题1. 封装封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。

例如C++中的类,它定义了该集合中每个对象所共有的属性和方法。

2. 继承继承是让某个类型的对象获得另一个类型的对象的特征。

例如:C++中子类对父类的继承,子类具有父类的特性,同时还可以拥有自己的新特性。

3. 多态多态是指不同类型的对象接收相同的消息时产生不同的行为。

多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减小代码的复杂度。

例如函数的重载。

4. 什么是this 指针?为什么要用this 指针?this 指针是类中的一个特殊指针,当类实例化时,this 指针指向对象自己;而在类的声明时,指向类本身。

通过它不仅可以提升成员函数操作的效率,而且能简化运算符重载代码。

5. 叙述公有、私有、保护成员在类中、类外和对象中的访问权限。

类中的关键字public, private, protected 声明了类中的成员与类外之间的关系,称为访问权限。

对于public 成员来说,他们是公有的,可以在类外和对象中访问。

对于private 成员来说,他们是私有的,不能在类外和对象中访问,数据成员只能由类中的函数使用,成员函数只允许在类中调用。

对于protected 成员来说,他们是受保护的,具有半公开性质,可以在类中与子类中访问。

6. 构造函数和析构函数的作用是什么?构造函数的功能是在创建对象时,给数据成员赋初值,即给对象初始化。

析构函数的功能是释放一个对象,在对象删除前,用来做一些内存释放等清理工作。

7. 什么是类的继承和派生?继承是指一个事物可以继承其父辈全部或部分的特性,同时本身还有自己的特性。

当一个新类从一个已定义的类中派生后,新类不仅继承了原有类的属性和方法,并且还拥有自己新的属性和方法,称为类的继承和派生。

8. 派生类public 继承方式有那些特点?(1)在派生类中,基类的公有成员、保护成员和私有成员的访问属性保持不变。

面向对象程序设计复习要点

面向对象程序设计复习要点

《面向对象程序设计》总复习第一部分各章复习要点第1章C++一、基本知识1.面向对象程序设计的基本概念●类、对象、属性、方法2.面向对象程序设计的特点●封装、继承、多态二、基本技能1.VC++6.0编程环境的使用●编辑、编译、运行、查错●调试由多个文件组成的程序2.cin和cout的使用第2章数据类型与表达式1.数据的存储●基本类型:整型、实型、字符型、布尔型●构造类型:结构、联合、枚举2.数据的表示●常量、变量3.符号的表示●运算符、表达式第3章C++控制结构一、基本知识1.语句概述●控制语句●函数语句●表达式语句●空语句2.语句要点●格式、执行过程、注意事项二、基本技能1.递推法程序设计●前项推后项●外加循环控制2.穷举法程序设计●用循环列出所有情况●找出满足条件的情况第4章函数一、基本知识1.函数的概念●函数的声明●函数的定义●函数的调用2.函数●数据传递:主函数→子函数,子函数→主函数3.变量的存储类型●动态●静态●寄存器4.变量的作用域●全局变量●局部变量二、基本技能1.嵌套函数设计●并列定义嵌套调用2.递归函数设计●由未知推向已知的递推公式●格式:If 已知else 递推3.重载函数设计●相同:函数名●不同:函数类型、参数(个数或类型)4.函数技巧●内联函数、外联函数●带默认参数值的函数●引用第5章数组、指针与字符串一、基本知识1.数组的概念●一维数组●二维数组●字符数组2.指针●如何获取各种数据的指针●如何用指针表示各种数据●用指针处理数据的优势二、基本技能1.排序●选择法排序●冒泡法排序2.字符串处理●输入●处理:比较、赋值、连接●输出3.指针●指针的定义●指针的获取●用指针表示数据第6章类和对象一、基本知识1.类2.对象3.构造函数4.析构函数5.拷贝构造函数6.友元7.组合类二、基本技能1.构造类●数据●函数(构造函数、析构函数、拷贝构造函数)2.友元函数●定义与使用3.静态成员●定义与使用4.对象数组5.对象指针第7章继承与派生一、基本知识1.继承2.继承方式3.继承的分类4.继承的二义性5.虚基类6.虚函数与纯虚函数7.抽象类二、基本技能1.构造派生类●构造函数、析构函数、拷贝构造函数2.继承要点●子类的对象如何使用基类的成员●子类的成员如何使用基类的成员第8章多态性一、基本知识1.多态性2.运算符重载二、基本技能1.单目运算符重载●前置运算符重载●后置运算符重载2.双目运算符重载3.运算符重载为友元函数●解决重载的二义性第9章模板一、基本知识1.函数模板2.类模板二、基本技能1.函数模板●定义和使用2.类模板●定义和使用第10章输入输出流一、基本知识1.控制格式2.文件二、基本技能文件编程要点●定义文件对象●打开文件●读写数据●关闭文件第二部分复习要点(一)基本概念1.类(构造函数、析构函数、拷贝构造函数)和对象2.面向对象程序的特点3.重载函数4.友元函数5.虚基类6.虚函数、纯虚函数7.抽象类8.模板函数、模板类9.文件类(二)基本技能1.构造类2.构造派生类(单继承、多继承)3.构造抽象类4.定义重载函数5.定义友元函数6.定义运算符的重载7.定义模板函数8.文件对象的使用第三部分主要问题(一)基本概念1.面向对象程序设计的特点是什么?2.类有哪些成分组成?3.构造函数、析构函数和拷贝构造函数的作用?4.重载函数、友元函数的作用?5.类的继承方式有哪些?对子类的对象有何影响?6.虚基类的作用?7.虚函数、纯虚函数的作用?8.运算符重载的作用?9.模板函数、模板类的作用?10.抽象类的作用?(二)基本技能1.面向对象程序设计的技巧有哪些?2.面向对象程序实现软件复用的方法有哪些?3.面向对象程序设计的多态性体现在哪些方面?。

c++面向对象程序设计笔记

c++面向对象程序设计笔记

c++面向对象程序设计笔记面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据(对象)和操作数据的函数(方法)组合在一起,形成一种新的数据类型,称为类(Class)。

面向对象程序设计具有封装、继承和多态等重要特性。

以下是一些关于C++面向对象程序设计的笔记:1.类(Class):类是面向对象程序设计的基本单位,它定义了一组属性(数据成员)和方法(成员函数)。

类的成员可以访问修饰符(public、private、protected),以控制成员的访问权限。

2.对象(Object):对象是类的实例,通过创建类的实例来创建对象。

对象可以调用其成员函数来访问其属性。

3.构造函数(Constructor):构造函数是一种特殊的成员函数,用于初始化对象。

构造函数在创建对象时自动调用。

4.析构函数(Destructor):析构函数是一种特殊的成员函数,用于释放对象所占用的资源。

析构函数在销毁对象时自动调用。

5.继承(Inheritance):继承是一种机制,允许子类继承父类的属性和方法,同时可以添加自己的属性和方法。

C++支持两种继承方式:公有继承(public)和私有继承(private)。

6.多态(Polymorphism):多态是指一个接口可以有多种实现方式。

在C++中,可以通过虚函数和纯虚函数来实现多态。

虚函数允许子类重写父类的成员函数,纯虚函数则是一个没有实现的虚函数。

7.抽象类(Abstract Class):抽象类是一种特殊的类,它不能被实例化。

抽象类通常包含纯虚函数,用于定义接口或行为规范。

8.运算符重载(Operator Overloading):运算符重载是指为已有的运算符定义新的操作方式。

在C++中,可以通过重载运算符来定义运算符的行为。

9.异常处理(Exception Handling):异常处理是一种处理程序运行过程中可能出现的错误或异常的机制。

C#面向对象程序设计学习知识点汇集.doc

C#面向对象程序设计学习知识点汇集.doc

C#面向对象程序设计知识点汇集第一章: C#入门1. namespace 关字namespace 即命名空,是定命名空的关字,命名空包含,是的方式。

namespace 命名空名{(); ”的功⋯ MainMainMainMain ET!");”的功能是向示屏出双引号之的字符串。

句“能是入一个字符串6. C#程序构C#程序的成要素如下:1) 命名空:命名空包含一个或多个。

2) 。

3) 方法:方法必包含在某一个中,作的一个成,每个程序有且有一个Main() 方法。

4)句:句是 C#用程序中行操作的命令。

C#中的句必用分号“ ;” 束。

5)关字:关字也叫保留字,是C#有特定意的字符串。

6)大括号:在 C#中,括号“ {”和“ }”是一种范志,表示代次的一种方式。

7. C#程序写格式1)2)字母大小写C#是大小写敏感的言,它把同一字母的大小写当作两个不同的字符待。

3) 程序注(1) 行注,以双斜“方法名称接受参数返回值类型功能Read() 无int 从输入流读入下一个字符ReadLine() 无string 从输入流读入一行文本,直到换行符结束Write() string void 输出一行文本WriteLine() string void 输出一行文本,并在结尾处自动换行MainET 框架具有两个主要件:____________________ 和 ____________________ 。

(2) 使用开的每一个用程序称__________ ,它可以包括一个或多个__________ 。

(3) 命名空是的方式,C#提供了关字__________ 来声明命名空,提供了关字____________________ 来入命名空;如果要使用某个命名空中的,需要添加命名空所在 __________ 的引用。

(4) C#言程序必包含并且只能包含一个的方法(函数 )是 __________ ,它是程序的入口点。

面向对象程序设计复习提纲

面向对象程序设计复习提纲

面向对象程序设计各章节重点题型1、选择题(每题2分,共20)2、填空题(每空1分,共30)3、判断题(每题3分,共15分)4、程序阅读及修改题(共15分)5、程序编写题(共20分)覆盖内容:课件、实验、作业第一章概述1、程序设计语言分类2、程序设计方法的发展过程3、面向对象的基本概念对象;类;类的封装、继承、多态4、面向对象的软件工程5、翻译程序的分类第二章C++简单程序设计1、C++语言的特点2、程序结构编译器在对源程序进行编译之前,前行要由预处理程序对源程序进行预处理。

所有的预处理指令在程序中都是以“#”来引导,每条预处理指令单独占用一行,不用分号结束。

程序由语句组成,以空格和换行来区分词法单位,每条语句由分号“;”作为结束符。

“endl”是C++输出时的控制符,作用是换行,与“\n”作用相同。

C++标准库中的类和函数都是在命名空间std中声明的,因此,程序中需要使用C++标准库中的相关内容时,需要用“using namespace std”语句进行声明,否则在指令前加前辍“std::”。

程序由语句组成,以空格和换行来区分词法单位,每条语句由分号“;”作为结束符。

标识符cout为输出流对象,“<<”为插入运算符,将操作符后的内容输出到标准输出设备(显示器)上。

标识符cin为输入运算符,“>>”为提取运算符,将从标准输入设备(键盘)上输入的数据输入到操作符后的变量中。

C++换行控制符为endl,其作用与“/n”相同。

头文件的使用:当使用标准输I/O流操作时,需要包括头文件:iostream.h;如果需要控制输出数据的特殊格式,需要包括头文件:iomanip.h;若需要对字符串进行操作,需要包括头文件:string.h;若需对文件进行操作,需要包含fstream.h 等。

3、数据数据类型C++中的数据数据类型大体上可以分为5种:基本类型、空类型、构造类型、指针类型、类类型;变量的存储类型有四种:auto(自动)、register(寄存器)、extern (外部)、static(静态)。

面向对象程序设计复习大纲

面向对象程序设计复习大纲

面向对象程序设计复习大纲一、C++的类和对象类:类是对多个对象进行综合抽象的结果,类将对象的属性和操作都封装在一起。

类定义一定以分号结束。

对象:是现实世界中客观存在的事物,每个对象都有自己的属性和行为。

对象是类的实例。

数据成员:类的私有成员可被类的成员函数和友元函数访问。

成员函数:在一个类中声明或定义的函数。

但不包括友元函数。

数据成员和成员函数都可为public、private、protected属性之一。

构造函数:与类同名,是类的成员函数,可以重载。

在定义对象时自动调用构造函数对类的数据成员初始化。

在定义构造函数不能指定返回类型(也不能使用void声明不带回返回值),构造函数可以带一个或多个参数,可以有默认值,一个类中一定有构造函数。

例:M为一个类,则执行M X(8),Y(7); 调用该类构造函数几次?析构函数:与类同名,在类名前加~,是类的成员函数,不可以重载。

在对象消亡时调用。

析构函数不指定返回类型(包括void),并且也没有参数。

一个类中一定有析构函数。

成员函数的重载:(1)函数参数的个数不同。

(2)函数对应参数的类型不完全相同。

复制构造函数:复制构造函数的参数是对某个对象的引用。

例:class point{int x,y;public:point(int a,int b) //构造函数{ x=a; y=b; }point(point &p) //复制构造函数{ x=2*p.x; y=2*p.y;}//……};void main(){ point p1(30,40); //定义对象p1point p2(p1); //显式调用复制构造函数,通过对象p1创建对象p2……}二、静态成员和友元静态数据成员:静态数据成员是类的成员,而不是对象的成员,即一个类的静态数据成员,可为该类的每个对象所共享。

用static 声明。

静态数据成员要在类体外进行初始化。

友元:不是类的成员函数,但可访问类的私有成员,友元可提高程序的运行效率,但破坏了类的封装性。

c++面向对象程序设计知识点

c++面向对象程序设计知识点

C++面向对象程序设计知识点一、概述在计算机科学中,面向对象程序设计是一种常见的程序设计范式,C++作为一种广泛应用的编程语言,也支持面向对象程序设计。

面向对象程序设计强调对象和类的概念,通过封装、继承和多态等特性来组织和管理代码,提高代码的重用性、可维护性和可扩展性。

本文将介绍C++面向对象程序设计的一些重要知识点,帮助读者更好地理解和应用面向对象程序设计。

二、类与对象1. 类的定义在C++中,类是一种用户自定义的数据类型,用于描述具有相似属性和方法的对象集合。

类的定义包括类名、属性和方法等成员,以及访问控制修饰符(public、private、protected)等。

```cppclass Person {public:string name;int age;void display();};```2. 对象的创建对象是类的实例化,通过类创建对象的过程称为实例化。

通过类名和对象名来创建对象,对象可以访问类的成员变量和方法。

```cppPerson p; // 创建一个Person对象 = "Alice";p.age = 25;p.display();```三、封装1. 成员访问控制C++中的访问控制修饰符包括public、private和protected,用于限制类的成员的访问权限。

其中,public成员可以在任何地方访问,private成员只能在类内访问,protected成员可以在派生类中访问。

```cppclass Person {public:string name;private:int age;protected:void display();};```2. 封装性封装性是面向对象程序设计的重要特点,通过访问控制和成员函数等方式,将类的实现细节隐藏起来,使外部无法直接访问和修改类的成员。

这样可以提高类的安全性和可维护性。

四、继承1. 继承的基本概念继承是面向对象程序设计的另一个重要特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。

C面向对象程序涉及复习要点重点复习PPT课件

C面向对象程序涉及复习要点重点复习PPT课件
• 对内存的使用—只读不可写(写在首次/初始化完成)。 • 常对象
const Time t; 或:Time const t; • 常数据成员
const int hour; • 常成员函数
void get_time() const;
第26页/共74页
• 指向对象的常指针 Time * const p1 = & t1;
D
第4页/共74页
• 变量的引用* 函数传值与函数传地址 对比引用与指针:P19 例1.10&1.11
• 内置函数 inline 作用:空间换时间
• 作用域运算符 ::
第5页/共74页
• 字符串变量 string 定义,与字符数组的关系 赋值 字符串操作:复制、连接、比较
• new和delete运算符
• 指向常对象的指针变量 const Time *p1 = & t1;
• 对象的常引用 const Time &t= t1; void fun( const Time & t ); { //不可改变t的值}
第27页/共74页
对象的动态建立和释放
• new & delete Box *pt; pt = new Box; delete pt;
友元成员函数:friend void Time::display(Date &);
• 友元类
允许另一个类或函数访问你的类的东西。 Class A{ Private:int i=0; Friend class b //声明 } Class B{} Void main() { A a1=new A();
第1章复习要点
• 简单的C++程序
#include <iostream> // 用cout输出时需要用 // 此头文件

C++面向对象程序设计总复习

C++面向对象程序设计总复习
C++面向对象程序设计 面向对象程序设计
总复习考试纲要
1
• 第一部分
• • • • • • • • • •
C++基础知识与语法辨析(35%) C++基础知识与语法辨析(35%) 基础知识与语法辨析
1.关于C C++语言的理解 1.关于C和C++语言的理解 关于 2.C++关于函数的新特性 2.C++关于函数的新特性 3.类与对象的概念 3.类与对象的概念 4. 类间的关系
7
2.C++关于函数的新特性 关于函数的新特性
(1)函数的调用方式 (1)函数的调用方式
传值、传址、引用中的引用调用对实参的要求 传值、传址、引用中的引用调用对实参的要求 传值:形参是变量,实参是表达式(特别地,可为常量、 传值:形参是变量,实参是表达式(特别地,可为常量、 变量) 变量) 传址:形参是指针、数组名,实参是地址值(变量地址、 传址:形参是指针、数组名,实参是地址值(变量地址、 指针变量、数组名) 指针变量、数组名) 引用:形参是引用,实参是变量名。 引用:形参是引用,实参是变量名。 当发生函数调用时,主调函数将实参传递给被调函数, 当发生函数调用时,主调函数将实参传递给被调函数,在 被调函数执行过程中, 被调函数执行过程中,实参的值仅在以下情况下会改变 传址:通过指针间接改变;数组元素可以改变( 传址:通过指针间接改变;数组元素可以改变(数组指 针不可改变) 针不可改变) 对象引用作函数参数比用对象指针更方便些
5
1.关于 和C++语言的理解 关于C和 关于 语言的理解
(2)面向对象的程序设计语言必须具备的关键 面向对象的程序设计语言必须具备的关键 要素是

c++面向对象程序设计复习资料

c++面向对象程序设计复习资料

构造函数与析构函数
• 构造函数显式调用 void main() { int age,year; cout<<"请输入树的年龄: "; //提示用户输入年龄 cin>>age; tree pTree = new tree(age); //显式调用产生无名对象 pTree->age(); //显示树的年龄 cout<<"请输入树的生长年限: "; cin>>year; pTree-> grow(year); //计算树的年龄 pTree-> age(); //显示树的年龄 }
类与对象概述
• 内联成员函数 为了提高运行时的效率,对于较简单的函数可以声明 为内联形式。 内联函数体中不要含有复杂结构(如循环语句和 switch语句)。 在类中声明内联成员函数的方式: –将函数体放在类的声明中——隐式声明。 –使用inline关键字——显式声明。
类与对象概述
• 对象 类的对象是该类的某一特定实体,即类类型的变量。 定义对象时,系统会为每一个对象分配自己的存储空 间,该空间只保存数据,函数代码是所有对象共享的。 ������ 声明形式:类名 对象名; 例:Clock myClock;
C++语言对C语言扩充和增强的具体体现
• 函数缺省参数 C++中允许函数有缺省参数。所谓缺省,是指函数 调用时可以不给出实际的参数值。有缺省参数的函数定 义的实例: int f(int a, int b=1) { return a*b; } 此后,函数调用f(3,1)和f(3)将返回同样的结果。 • 更加方便的动态存储分配 C++为了提高内存管理上的灵活性,提供了动态内 存分配合释放的操作符new和delete,用来增强C语言中 原有的函数malloc()和free();

面向对象程序设计复习总结题(含部分答案)

面向对象程序设计复习总结题(含部分答案)

《面向对象程序设计》复习要点及复习题(一)复习要点1.标识符、基本数据类型(字节数)、构造数据类型、运算符的种类、运算符的优先级和结合性、控制台输入和输出2.三种基本控制结构、if…else语句、switch语句、for语句、while语句、do…while语句、跳转语句;函数参数传递、函数重载、内联函数;标识符的作用域和生存期。

3.类的定义和使用、this指针、构造函数和析构函数、组合技术、静态成员、友元、运算符重载4.指针与数组、二级指针、动态内存的分配与释放、深复制与浅复制、递归。

5.派生类的构造与析构、派生类与基类的赋值兼容、多重继承与虚基类。

6.虚函数与动态绑定、纯虚函数与抽象类(二) 复习题一、单项选择题。

1.在switch语句中,为了结束分支,一般应在每个分支的结尾处加上语句(C)。

A. continueB. gotoC. breakD. default2.说明友元函数的关键字是(D)。

A. inlineB. virtualC. staticD. friend3.下面对指向常量的指针描述正确的是(C)。

A. 只能指向常量B. 指向的数据可以被修改C. 可以指向普通变量D. 必须进行初始化4.友元函数没有(A)。

A. this指针B. 返回类型C. 函数名D. 参数5.关于重载,(A)不正确。

A. 类名可以重载B. 函数名可以重载C. 运算符可以重载D. 缺省参数是重载的一种方式6.用new分配n维数组空间,首地址赋予指针p,则p应为指向(C)维数组的指针。

A. 0B. 1C. n-1D. n7.为类X重载前缀自增运算,则函数返回类型应为(C)。

A. XB. X*C. X&D. int8.以下(A)未调用构造函数(X为类名)。

A. X*p;B. X obj;C. X obj(1);D. X obj=2;9.若在类外有函数调用X::func();则函数func是类X的(C)函数。

《C++面向对象程序设计II》复习要点doc

《C++面向对象程序设计II》复习要点doc

《C++面向对象程序设计II》复习要点:第一部分:知识点:1.结构体与枚举类型(了解)掌握定义结构体类型、结构体变量,结构体数组的方法,掌握结构体变量的初始化、结构体变量成员引用方法,理解指向结构体类型数据的指针,了解枚举型类型和变量的特点。

2.指针 (熟悉)掌握指针变量的定义、初始化和赋值方法,掌握利用指向变量、一维数组、字符串的指针变量来正确引用变量、数组元素、字符串的方法,熟悉获取变量、数组、字符串地址的方法,掌握指针变量作为函数的参数传递的方法。

3.类和对象(掌握)1)掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2)掌握类对象的定义;3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。

能够根据给定的要求定义类并实现类的成员函数。

4.类和对象其他特性(掌握)1)掌握静态数据成员、静态成员函数的定义和使用;2)掌握友元函数的定义和使用,理解友元函数和成员函数的区别;3)掌握常数据成员、常成员函数的定义和使用。

5.继承和派生(掌握)1)理解继承的含义,掌握派生类的定义方法和实现;2)理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;3)理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;6.多态性与虚函数(掌握)1)了解早期和后期联编的概念;2)掌握运算符重载;3)掌握虚函数、纯虚函数和抽象类。

7.输入/输出流(了解)1) 了解C++的流,包括C++的预定义流;2) 了解文件系统的概念,包括文件指针和关于文件的操作;3) 掌握文件的打开、关闭、读写、定位等操作。

8.模板(了解)1)掌握函数模板的定义和使用方法;2)掌握类模板的定义和使用方法。

第二部分:题型一、选择题(共40分,每小题2分)1. ()2.()3.()4.()5.()6. ()7.()8.()9.()10.()11.()12.()13.()14.()15()16.()17.()18.()19.()20()二、填空题(共20分,每空2分)1.2.3.4.5.6.7.8.9.10.三、读程序,写出下面程序的运行结果(共2题,每小题10分,共20分)1.(10分)2. (10分)四、程序题。

c面向对象程序设计期末

c面向对象程序设计期末

c面向对象程序设计期末面向对象程序设计期末复习面向对象程序设计(Object-Oriented Programming,简称OOP)是一种以对象为核心,以类为单位来组织代码的编程范式。

它强调的是数据和功能的封装、继承和多态性,使得代码更加模块化、易于理解和维护。

以下是面向对象程序设计期末复习的主要内容:1. 面向对象的基本概念- 对象:对象是现实世界中事物的抽象,它具有状态(属性)和行为(方法)。

- 类:类是对象的模板,定义了对象的属性和方法。

- 封装:封装是将对象的实现细节隐藏起来,只暴露有限的操作接口。

- 继承:继承允许新创建的类(子类)继承现有类(父类)的属性和方法。

- 多态:多态是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型来确定。

2. 类和对象- 如何定义类:使用类关键字和类名,然后在类体中定义属性和方法。

- 对象的创建:使用类名作为构造函数来创建对象实例。

- 访问修饰符:public、private、protected等,用于控制类成员的访问权限。

3. 继承- 单继承:一个类只能继承一个父类。

- 多重继承:一个类可以继承多个父类。

- 继承的实现:通过扩展父类的功能来创建子类。

4. 多态- 多态的实现:通过方法重载(Overloading)和方法重写(Overriding)。

- 接口:定义了一组方法规范,但不实现方法的具体内容。

- 抽象类:不能被实例化,用于作为其他类的基类。

5. 封装- 封装的实现:通过将类的成员变量设置为私有(private),并提供公共(public)的方法来访问和修改这些变量。

6. 抽象类和接口- 抽象类:包含抽象方法的类,不能被实例化。

- 接口:完全抽象的类,只能包含抽象方法和常量。

7. 异常处理- 异常:程序运行时出现的非预期情况。

- 异常处理机制:try、catch、finally语句块,用于捕获和处理异常。

8. 集合框架- 集合:用于存储对象的容器。

《c++面向对象程序设计》知识点

《c++面向对象程序设计》知识点

《c++面向对象程序设计》知识点《C++面向对象程序设计》是计算机科学领域中一门重要的课程,涵盖了C++编程语言中的面向对象编程(OOP)概念和特性。

以下是该课程的一些核心知识点:类和对象:类是对象的抽象,定义了对象的属性(数据成员)和方法(成员函数)。

对象是类的实例,是实际存在的事物。

封装:这是面向对象编程的一个重要特性,它隐藏对象的内部状态并仅通过明确定义的接口与外部世界交互。

这有助于保护数据,防止错误使用。

继承:允许创建一个新类(子类或派生类)继承另一个类(父类或基类)的属性和方法。

这使得代码重用和多态成为可能。

多态:允许一个接口被多种数据类型实现。

在运行时,根据对象的实际类型来决定调用哪个版本的方法。

这是通过虚函数和纯虚函数实现的。

运算符重载:允许程序员为类重载运算符,以改变其默认行为。

这使得类的使用更符合自然语言习惯。

友元函数和类:允许一个函数或类访问另一个类的私有和保护成员。

这在某些情况下非常有用,但要谨慎使用以避免破坏封装。

异常处理:使用try、catch、throw语句来处理运行时异常,确保程序的健壮性。

模板:允许定义接受任意数据类型的函数或类,这在泛型编程中非常有用。

STL(标准模板库):包括一系列高效、实用的容器、算法和函数对象,如vector、list、map、set等。

RAII(资源获取即初始化):一种编程技术,通过将资源(如内存、文件句柄等)与对象的生命周期绑定,自动管理资源的分配和释放。

以上知识点是C++面向对象程序设计中的一些关键点,理解并掌握这些知识点对于理解和使用C++的面向对象编程是非常重要的。

C 面向对象程序设计复习提纲

C  面向对象程序设计复习提纲
第一章 C++的初步知识 第二章 类和对象 第三章 关于类和对象的进一步讨论 第四章 运算符重载 第五章 继承与派生 第六章 多态性与虚函数 第七章 输入输出流
第一章 C++的初步知识
• • • • • 1.1 1.2 1.3 1.4 1.5 从C到C++ C++语言的词法和词法规则 最简单的C++程序 C++对C的扩充√ C++程序的编写和实现
5.5.1 简单的派生类的构造函数
• 何为简单派生类? 只有一个基类,只有一级派生; 派生类数据成员中不包含基类的对象(子对象)。 • 构造函数格式:
派生类名::派生类名(基类所需的形参,本类成员所
需的形参):基类名(基类参数表)
{ 本类成员初始化赋值语句; }; 说明:基类所需的形参,基类参数表 一一对应
3.1构造函数
• • • • • • 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 对象的初始化 确定对象的初始状态 构造函数的作用 带参数的构造函数 用参数初始化表初始化数据成员 构造函数的重载 使用默认参数的构造函数
3.1.2构造函数的作用
构造函数的作用: • 用于为对象分配空间和进行初始化。 构造函数的特点: • (1)构造函数的名字与它的类名必须相同; • (2)它没有类型,不返回值,为public类型; • (3)它可以带参数,也可以不带参数; • (4)不需要写调用语句,在系统建立对象 时由系统自觉调用执行。 • (5)如果用户没有定义构造函数,C++系 统会自动生成一个空的构造函数。
• 方法: 定义一个重载运算符函数,在需要时系统 自动调用该函数,完成相应的运算。 • 实质: 函数的重载。 • 运算符重载函数的格式: 函数类型 operator 运算符(形参表) { 重载处理 } 数据类型:是重载函数值的数据类型。 operator 是保留字

面向对象程序设计考前复习题及答案

面向对象程序设计考前复习题及答案

简答题1、传统的结构化程序设计的优点和缺点是什么?优点:(1)这种程序设计方法力求算法描述精确。

(2)对每一子过程模块简单进行程序正确性证明。

缺点:(1)这种程序设计方法本质上是面对“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能干脆反映人类求解问题的思路。

(2)程序代码可重用性差。

程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。

即使重用代码,通常也是通过拷贝或编辑重新生成一份。

(3)维护程序的一样性困难。

该种方法将数据与对数据进行处理的程序代码分别。

2、什么是对象?每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。

对象的属性描述了对象的状态和特征,对象的方法说明白对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。

3、什么是消息?在面对对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。

当一个对象须要另外一个对象供应服务时,它向对方发出一个服务恳求,而收到恳求的对象会响应这个恳求并完成指定的服务。

这种向对象发出的服务恳求就称为消息。

4、什么是多态性?所谓多态性是指当程序中的其他部分发出同样的消息时,根据接收消息对象的不同能够自动执行类中相应的方法。

其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大便利。

5、什么是面对对象的程序设计方法?这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。

在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法确定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。

6、面对对象方法的特点是什么?(1)OOP以“对象”或“数据”为中心。

由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更困难的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的变更对整个系统几乎没有影响。

C面向对象程序设计重点复习

C面向对象程序设计重点复习

面向对象程序设计复习题一、单项选择题1.下面关于对象概念的描述中,_______是错误的;BA.对象代表着正在创建的系统中的一个实体B.对象就是C语言中的结构体变量C.对象是一个状态和操作或方法的封装体D.对象之间的信息传递是通过消息进行的2. 继承机制的作用是: CA.信息隐藏B.数据封装C.定义新类D.数据抽象3.有关析构函数的说法不正确的是_________DA.析构函数有且只有一个B.析构函数无任何函数类型C.析构函数没有形参D.析构函数不能是虚函数4.友元的作用之一是__________AA.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类5.通常拷贝构造函数的参数是__________;CA.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名6.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是________;Cshow=0; void show;void show=0; show=0 virtual;7.下面关于友元的描述中,错误的是_________;DA.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承8.在C++中,_________运算符不能重载;BA. +B.: D.<=9.下列关于运算符重载的描述中,________是正确的;DA.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构10. 在下列函数原型中,可以作为类AA构造函数的是_________DA.void AAint ; B.int AA ; C.AAintconst; D.AAint;11.在声明类时,下面的说法正确的是_________;CA.可以在类的声明中给数据成员赋初值B.数据成员的数据类型可以是register,public,protected可以按任意顺序出现D.没有用private,public,protected定义的数据成员是公有成员12.继承具有________,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员;BA.规律性B.传递性C.重复性D.多样性13.在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则___________;AA.完全相同B.完全不同C.部分相同,部分不同D.以上都不对14.对虚函数的调用__________;DA.一定使用动态联编B.必须使用动态联编C.一定使用静态联编D.不一定使用动态联编15.关于成员函数特征的下述描述中,_______是错误的;AA.成员函数一定是内置函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的16. 下面关于c++语言变量的叙述错误的是_______BA.在c++语言中变量分为auto,static,extern和register四种存储类型B.自动变量和外部变量的作用域为整个程序C.内部变量的作用域是定义它的函数D.外部静态变量的作用域是定义它的文件17.下列的各类函数中,_______不是类的成员函数;CA.构造函数B.析构函数C.友元函数D.拷贝构造函数18. 有如下类声明:class Foo {ing bar ;};则Foo类的成员bar是_________CA.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数19.下列表示引用的方法中,__________是正确的;已知:int m=10; DA. float &t=&m; &y=10; &z; D. int &x=m;20.设置虚基类的目的是________;BA.简化程序B.消除二义性C.提高运行效率D.减少目标代码21.对于类中定义的成员,其隐含访问权限为________B22.关于类和对象不正确的说法是________ BA.类是一种类型,它封装了数据和操作B.一个类的对象只有一个C.对象是类的实例D.一个对象必属于某个类23.声明一个类的对象时,系统自动调用一个函数___c___;撤消对象时,系统自动调用一个函数;该函数为___c___A.成员函数;构造函数B.复制构造函数;析构函数C.构造函数;析构函数D.析构函数;复制构造函数24.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的__A______ 成员成员成员 D.友元25.在C++中,要实现动态联编,必须使用_____D___调用虚函数A.类名B.派生类指针C.对象名D.基类指针26.若一个类中含有纯虚函数,则该类称为____A____A. 抽象类B. 纯基类C.派生类D. 基类27.下列关于this指针的叙述中,正确的是___D_____A.任何与类相关的函数都有this指针B.类的成员函数都有this指针C.类的友元函数都有this指针D.类的非静态成员函数才有this指针28.有如下类声明:class Book {int num ;};则Book类的成员num是___D_____A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数29.下面有关重载函数的说法中正确的是___C_____A.重载函数必须具有不同的返回值类型;B.重载函数形参个数必须不同;C重载函数必须有不同的形参列表; D.重载函数名可以不同;30.设置虚基类的目的是___A_____A.消除二义性B.简化代码C.提高运行效率D.减少目标代码31.在C++语言程序中,对象之间的相互通信通过___B_____A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现32.下列运算符中,在C++语言中不能重载的是__C______A. B.>= C.:: D./33.下面对友元函数描述正确的是___C_____A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员34.下面叙述不正确的是___A_____A.基类的保护成员在派生类中仍然是保护成员B.基类的保护成员在公有派生类中仍然是保护成员C.基类的保护成员在私有派生类中是私有成员D.对基类成员的访问必须是无二义性35.下面对静态数据成员的描述中,正确的是___D_____A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类的对象调用C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用36.在C++类语言体系中,不能被派生类继承的有_______BA.转换函数B.构造函数C.虚函数D.静态成员函数37.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是____C____A.友元函数B.虚函数C.构造函数D.析构函数38.下列关于虚基类的描述中,错误的是_B_______A.设置虚基类的目的是为了消除二义性;B.虚基类的构造函数在非虚基类之后调用;C.若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用;D.若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数;39.考虑函数原型voidtestinta,int b=7,char="",下面的函数调用中,属于不合法调用的是___C_____A. test5 5,8 6,"" 0,0."";40.下列关于构造函数的描述中,错误的是___D_____A.构造函数可以设置默认参数;B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数;D.构造函数不可以重载41.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是 ; DA.一元成员运算符 B.二元成员运算符 C.一元友元运算符 D.选项B和选项C都可能42.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是 ; CA.派生类的对象可以赋给基类的对象 B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员 D.派生类的对象的地址可以赋给指向基类的指针43.下面关于虚函数的描述,错误的是 ; BA.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C.虚函数可以是另一个类的友元函数,但不能是静态成员函数D.基类中说明的纯虚函数在其任何派生类中都必须实现44.定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为 ; AA.私有继承 B.非私有继承 C.保护继承 D.公有继承45.有如下程序:includeusing namespace std;class ONE{int c;public:ONE:c0{cout<<1;}ONEint n:cn{cout<<2;}};class TWO{ONE onel;ONE one2;public:TWOint m:one2m{cout<<3;}};int main{TWO t 4 ;return 0 ;}运行时的输出结果是 ; CA.3B.23C.123D.21346.关于静态数据成员的描述中正确的是DA类的静态数据成员不是类的所有对象共享的数据B类的静态数据成员不能被类的成员函数调用C类的静态数据成员不能被类的构造函数调用D类的静态数据成员必须进行初始化47下面正确的是,在父类中的访问属性访问修饰符在子类中的访问属性CApublic,private不能直接访问 Bprotect,public,publicCprivate,public不能直接访问 Dprotect,private,protect48类A是类B的友元,类B是类C的友元,则下列说法正确的是DA类B是类A的友元B类C是类A的友元C类A是类C的友元D以上都不对49下列关于构造函数说法不正确的是CA构造函数必须与类同名 B构造函数可以省略不写C构造函数必须有返回值 D在构造函数中可以对类中的成员进行初始化50.类的析构函数的作用是DA一般成员函数的初始化 B类的初始化C对象的初始化D删除类创建的对象51.下列说法正确的是BA内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C类的内联函数必须在类体内定义D类的内联函数必须在类体外通过加关键字inline定义52.下面对静态数据成员的描述中,正确的是DA静态数据成员可以在类体内进行初始化B静态数据成员不可以被类的对象调用C静态数据成员不能受private控制符的作用D静态数据成员可以直接用类名调用二、知识点1.实现运行时的多态性要使用虚函数;2.如果一个类至少有一个纯虚函数,那么就称该类为抽象类;3. 运算符重载不能改变操作符的个数、运算符的优先级、运算符的结合性和运算符的语法结构;4. 构造函数是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作;5. 静态成员函数不能直接引用类中说明的非静态成员;6. 引用是给对象取一个别名,它引入了对象的同义词;7.设置友元函数的目的是为能够访问该类的私有成员;8.运算符重载仍然保持原来的优先级、结合性和语法结构;9.基类的私有成员不能被派生类的成员访问;10.静态联编支持的多态性称为编译时的多态性,也称静态多态性;11.任何类中允许有三种访问权限的数据,这三种访问权限分别是public、private、protected;12.为了满足运算符“+”的可交换性,必须将其重载为友元函数;13.对于含有对象成员的派生类,其构造函数的执行顺序为:先执行基类的构造函数、再执行对象成员的构造函数,后执行派生类的构造函数;14.利用成员函数对双目运算符重载,其左操作数为this指针指出的对象,右操作数为成员函数参数;++允许在相同的作用域内以相同的名字定义几个不同实现的函数,称这种同一个函数名多个含义的现象为函数重载;16.通过使用new和delete两个运算符进行的分配为动态存储分配;17.当类定义中有数据成员为指针时,解决浅拷贝出现的运行错误的方法是编写拷贝构造函数;18.如果使用protected继承基类,其公有成员就会变成派生类的保护成员,其保护成员就会变成派生类的保护成员,其私有成员不能继承19.一个函数功能不太复杂但要求被频繁调用,应定义为内联函数;20.抽象类只能作为基类使用,而不能声明它的对象;21.构造函数可以重载,析构函数不可以重载;22.静态成员函数没有this指针;23.类有两个特殊的成员函数构造函数和析构函数;24.在表达式x+yz中,+是作为成员函数重载的运算符,是作为非成员函数重载的运算符;其中operator+有一个参数,operator有两个参数;25.一个派生类只有一个基类的情况称为单继承,而有多个直接基类的情况称为多继承;26.调用析构函数的次序正好与调用构造函数的次序相反;27. 非成员函数应说明为类的友元函数才能访问这个类的private成员;28. 通过使用new和delete两个运算符进行的分配为动态存储分配;29.如果类B继承了类A,则称类A为类B的基类,类B称为类A的派生类30. 表达式operator+x,y还可以表示为x+y ;31 C++语言中的多态性分为编译时的多态性和运行时的多态性;32将x+yz中的"+"用成员函数重载,""用友元函数重载,应解释为x. operator+operatory,z33如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是friend void A ;34派生类的成员一般分为两部分,一部分是从基类继承的成员,另一部分是自己定义的新成员;35继承的方式有公有继承、私有继承和保护继承3种;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C面向对象程序设计重点复习Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#面向对象程序设计复习题一、单项选择题1.下面关于对象概念的描述中,_______是错误的。

(B)A.对象代表着正在创建的系统中的一个实体B.对象就是C语言中的结构体变量C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的2. 继承机制的作用是: (C)A.信息隐藏B.数据封装C.定义新类D.数据抽象3.有关析构函数的说法不正确的是_________(D)A.析构函数有且只有一个B.析构函数无任何函数类型C.析构函数没有形参D.析构函数不能是虚函数4.友元的作用之一是__________(A)A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类5.通常拷贝构造函数的参数是__________。

(C)A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名6.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是________。

(C)show()=0; void show();void show()=0; show=0 virtual;7.下面关于友元的描述中,错误的是_________。

(D)A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承8.在C++中,_________运算符不能重载。

(B)A. +B.: D.<=9.下列关于运算符重载的描述中,________是正确的。

(D)A.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构10. 在下列函数原型中,可以作为类AA构造函数的是_________(D)A.void AA(int) ; B.int AA( ) ; C.AA(int)const;D.AA(int);11.在声明类时,下面的说法正确的是_________。

(C)A.可以在类的声明中给数据成员赋初值B.数据成员的数据类型可以是register,public,protected可以按任意顺序出现D.没有用private,public,protected定义的数据成员是公有成员12.继承具有________,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。

(B)A.规律性B.传递性C.重复性D.多样性13.在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则___________。

(A)A.完全相同B.完全不同C.部分相同,部分不同D.以上都不对14.对虚函数的调用__________。

(D)A.一定使用动态联编B.必须使用动态联编C.一定使用静态联编D.不一定使用动态联编15.关于成员函数特征的下述描述中,_______是错误的。

(A)A.成员函数一定是内置函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的16. 下面关于c++语言变量的叙述错误的是_______(B)A.在c++语言中变量分为auto,static,extern和register四种存储类型B.自动变量和外部变量的作用域为整个程序C.内部变量的作用域是定义它的函数D.外部静态变量的作用域是定义它的文件17.下列的各类函数中,_______不是类的成员函数。

(C)A.构造函数B.析构函数C.友元函数D.拷贝构造函数18. 有如下类声明:class Foo {ing bar ;};则Foo类的成员bar是_________(C)A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数19.下列表示引用的方法中,__________是正确的。

已知:int m=10; (D)A. float &t=&m; &y=10; &z; D. int &x=m;20.设置虚基类的目的是________。

(B)A.简化程序B.消除二义性C.提高运行效率D.减少目标代码21.对于类中定义的成员,其隐含访问权限为________(B)22.关于类和对象不正确的说法是________ (B)A.类是一种类型,它封装了数据和操作B.一个类的对象只有一个C.对象是类的实例D.一个对象必属于某个类23.声明一个类的对象时,系统自动调用一个函数___c___;撤消对象时,系统自动调用一个函数;该函数为___c___A.成员函数;构造函数B.复制构造函数;析构函数C.构造函数;析构函数D.析构函数;复制构造函数24.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的__A______成员成员成员 D.友元25.在C++中,要实现动态联编,必须使用_____D___调用虚函数A.类名B.派生类指针C.对象名D.基类指针26.若一个类中含有纯虚函数,则该类称为____A____A. 抽象类B. 纯基类C.派生类D. 基类27.下列关于this指针的叙述中,正确的是___D_____A.任何与类相关的函数都有this指针B.类的成员函数都有this指针C.类的友元函数都有this指针D.类的非静态成员函数才有this指针28.有如下类声明:class Book {int num() ;};则Book类的成员num是___D_____A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数29.下面有关重载函数的说法中正确的是___C_____A.重载函数必须具有不同的返回值类型;B.重载函数形参个数必须不同;C)重载函数必须有不同的形参列表; D.重载函数名可以不同;30.设置虚基类的目的是___A_____A.消除二义性B.简化代码C.提高运行效率D.减少目标代码31.在C++语言程序中,对象之间的相互通信通过___B_____A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现32.下列运算符中,在C++语言中不能重载的是__C______A.*B.>=C.::D./33.下面对友元函数描述正确的是___C_____A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员34.下面叙述不正确的是___A_____A.基类的保护成员在派生类中仍然是保护成员B.基类的保护成员在公有派生类中仍然是保护成员C.基类的保护成员在私有派生类中是私有成员D.对基类成员的访问必须是无二义性35.下面对静态数据成员的描述中,正确的是___D_____A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类的对象调用C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用36.在C++类语言体系中,不能被派生类继承的有_______BA.转换函数B.构造函数C.虚函数D.静态成员函数37.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是____C____A.友元函数B.虚函数C.构造函数D.析构函数38.下列关于虚基类的描述中,错误的是_B_______A.设置虚基类的目的是为了消除二义性;B.虚基类的构造函数在非虚基类之后调用;C.若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用;D.若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数; 39.考虑函数原型voidtest(inta,int b=7,char="*"),下面的函数调用中,属于不合法调用的是___C_____A. test(5) (5,8) (6,"#")(0,0."*");40.下列关于构造函数的描述中,错误的是___D_____A.构造函数可以设置默认参数;B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数;D.构造函数不可以重载?41.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是( )。

DA.一元成员运算符 B.二元成员运算符 C.一元友元运算符 D.选项B和选项C都可能42.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。

CA.派生类的对象可以赋给基类的对象 B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员 D.派生类的对象的地址可以赋给指向基类的指针43.下面关于虚函数的描述,错误的是( )。

B?A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C.虚函数可以是另一个类的友元函数,但不能是静态成员函数D.基类中说明的纯虚函数在其任何派生类中都必须实现44.定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为( )。

AA.私有继承 B.非私有继承 C.保护继承 D.公有继承45.有如下程序:#includeusing namespace std;class ONE{int c;public:ONE():c(0){cout<<1;}ONE(int n):c(n){cout<<2;}};class TWO{ONE onel;ONE one2;public:TWO(int m):one2(m){cout<<3;}};int main(){TWO t (4) ;return 0 ;}运行时的输出结果是( )。

CA.3B.23C.123D.21346.关于静态数据成员的描述中正确的是DA)类的静态数据成员不是类的所有对象共享的数据B)类的静态数据成员不能被类的成员函数调用C)类的静态数据成员不能被类的构造函数调用D)类的静态数据成员必须进行初始化47下面正确的是,在父类中的访问属性访问修饰符在子类中的访问属性()CA)public,private不能直接访问 B)protect,public,publicC)private,public不能直接访问 D)protect,private,protect48类A是类B的友元,类B是类C的友元,则下列说法正确的是DA)类B是类A的友元B)类C是类A的友元C)类A是类C的友元D)以上都不对49下列关于构造函数说法不正确的是CA)构造函数必须与类同名 B)构造函数可以省略不写C)构造函数必须有返回值 D)在构造函数中可以对类中的成员进行初始化50.类的析构函数的作用是DA)一般成员函数的初始化 B)类的初始化C)对象的初始化D)删除类创建的对象51.下列说法正确的是BA)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C)类的内联函数必须在类体内定义D)类的内联函数必须在类体外通过加关键字inline定义52.下面对静态数据成员的描述中,正确的是DA)静态数据成员可以在类体内进行初始化B)静态数据成员不可以被类的对象调用C)静态数据成员不能受private控制符的作用D)静态数据成员可以直接用类名调用二、知识点1.实现运行时的多态性要使用虚函数。

相关文档
最新文档