}
程序的运行结果是:
Initializingdefault
Initializingdefault
00
Destructorisactive
Destructorisactive
9以下程序的功能是:
通过指针操作,找出三个整数屮的最小值并输出,请填空。
#include
usingnamespacestd;
voidmain()
{
int*a,*b,*c,num,x,y,z;
a二&x;b二&y;c二&z;
cout«n输入3个整数:
M«endl;
cout«"a=n;cin»*a;
cout«nb=";cin»*b;
cout«"c=";cin»*c;
num=*a;
if(*a>*b)num=*b
if(num>*c)num=*c
cout«num«endl;
10分析程序,写出运行结果。
#include
usingnamespacestd;
classA
{
private:
intal,a2;
public:
A(inti=0,intj=0)
{
al=i;
a2=j;
}
〜A()
{
cout«Hal="«al«",a2=H«a2«endl;
}
};
voidmain()
{
Aa,b(5,8);
}
程序运行后的结果是:
31=5,32=8
al二0,a2二0
二、程序设计题
1创建一个Student类,该类的属性成员有:
姓名、学号。
函数成员有显式学生学号函数showID()o
(1)要求重载构造函数,通过构造函数对属性初始化。
(2)编写一段程序,生成一个学生对象。
同时显式学生学号。
#include
usingnamespacestd;
classStudentprivate:
charname[20];
intnumber;
public:
Student()
{
cout«H请输入学生姓名”;cin»name;
cout«"请输入学生学号";cin»number;
}
voidshowID()
{
cout«"学生学号:
H«number«endl;
}
};
voidmain()
{
Studentst;
st.showID();
}
2.设计一个抽象类Shape,使得其派牛类Circle和Square都定义计算面积函数Area()o
classShape
{
public:
virtualdoubleArea()=0;
};
classSquare:
publicShape
{
private:
doublelength;
public:
length=len;}
returnlength^length;}
radius=rad;}
returnradius^radius*3」4;
Square(doublelen=0){doubleArea(){
};
classCircle:
publicShape
{
private:
doubleradius;
public:
Circle(doublerad){doubleArea(){};
3创建一个Animal类,该类的属性成员有:
名字、重量。
函数成员有显式动物名字的函数showName()o
(1)要求重载构造函数,通过构造函数对屈性初始化。
(2)编写一段程序,生成一个动物。
同时显式动物名字。
#include
usingnamespacestd;classAnimalprivate:
charname[20J;
doubleweight;
public:
Animal()
{
cout«,r请输入动物名字:
”;cin»name;
cout«n请输入动物体重:
”;cin»weight;
}
voidshowName()
{
cout«"theanimalname:
u«name«endl;
}
};
voidmain()
{
Animalan;
an.showName();
}
4设计类Vehicle和类Car,定义其中的showmember()成员函数为虚函数。
#include
usingnamespacestd;
classVehicle
{
public:
virtualvoidshowmember()
{
cout«"VehcleH«endl;
}
};
classCar:
publicVehicle
{
public:
voidshowmember()
{
cout«"carn«endl;
}
};
voidmain()
{
Carcar;
car.showmember();
}
三、简答题(通过网络或者课本自己查找答案)
1简述什么是而向对象程序开发
面向对彖程序设计,开发各类软件的范型。
它是将软件看成是一个由抽彖组成的社会,这些对彖拥有足够的智能,能理解从其他对彖接受的信息,并从适当的作出响应,允许底层从高层对彖继承属性和行为,通过这样的设计思想和方法,将锁模拟的现实世界中的事物,直接映射到软件系统的解空间。
2简述什么是多态。
按字面意思为“多种状态”,在面向对象语言中,接口的多种不同的实现方式,即多态。
3什么是抽象类?
抽象类有何作用?
可以声明抽象类的对象吗?
抽象类指的是有纯虚函数,可包含一般类所包含的所有特性。
它不能实例化,并且常常部分实现或根本不实现。
通过继承它实现多态,后期绑定可以为将来耍实现的东西作为接口,实现重用性
不能
4什么是this指针?
它有何作用?
This指针是一个仅能被类的非静态成员函数所访问的特殊指针。
作用:
当一个对象调用成员函数时,编译器先将对象的地址赋给this
指针,然后调用成员函数。
四、选择题
1.下列关于指针的运算屮,非法的是(D)。
A、两个指针在一定条件下,可以进行相等或不相等运算;
B、可以将一个空指针赋值给某个指针;
C、一个指针可以加上两个整数值差;
D、两个指针在一定条件下可以相加;
2.在C++中,打开一个文件就是将这个文件与一个(B)建立关联;关闭一个文件就是取消这种关联。
A、类B、流;C、对象;D、结构;
3.C++屮的类有两种用法:
一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过(B),派生出新的类。
A、重载B、继承;C、单继承;D、多继承;
4.多态性指的是(C)
A、以任何方式调用一个虚函数;B、以任何方式调用一个纯虚函数;
C、借助于指向对象的基类指针或引用调用一个虚函数;
D、借助于指向对象的基类指针或引用调用-•个纯虚函数;
5.constint*p说明不能修改(B)。
A、p指针B、p指针指向的变量
C、p指针指向的数据类型D、上述A,B,C三者
6.有关类的说法错误的是(D)
A、类时一种用户自定义的数据类型
B、只有类屮的成员函数才能存取类屮的私有数据
C、在类屮,如果不作特别说明,所指的数据均为私冇类型
D、在类中,如果不作特别说明,所指的成员函数均为公有类型
7.用于给对象取一个别名,引入对象的同义词的(C)。
A、指针B、结构体C、引用D、枚举
8.下而关于友元的描述,说法错误的是(D)
A、友元函数可以访问该类的私有成员
B、一个类的友元类中的成员函数都是这个类的友元函数
C、友元可以提高程序的运行效率
D、类与类之间的友元关系可以继承
9.下列关于对象概念的描述中,错误的是(A)。
A、对彖就是C语言屮的结构体变量;
B、对象代表着正在创建的系统中的一个实体;
C、对象是一个状态和操作(或方法)的封装体;
D、对彖Z间的信息传递是通过信息进行的;
10.类模板的模板参数(D)。
A、只可作为数据成员的类型B、只可作为成员函数的返冋类型;
C、只可作为成员函数的参数类型;D、以上三者皆可;
11・关于虚函数的描述中,正确的是(C)
A、虚函数是一个static类型的成员函数B、虚函数是一个非成员函
数;
C、基类中说明了虚函数后,派生类中其对应的函数可不必说明为虚函数;
D、派生类的熄函数与基类的虚函数具有不同的参数个数和类世;
12.已知intm=10;,下列表示引用的方法中正确的是(B)。
A^int&x二10;int&x=m;C、int&x;D>float&t=&m;
13.—个类的友元函数能够访问该类的(D)。
A^私有成员;B>保护成员;C、公有成员;D、所有成员;
14.K列运算符中,在C++中不能重载的是(A)。
A、?
:
B、+;C、-;D、[];
15•派生类的对象对它的基类成员中(A)是可以访问的。
A、公有继承的公有成员;B、公有继承的私有成员;
C、公有继承的保护成员;D、私有继承的公有成员;
16.卜•列运算符中,在C++中不能重载的是(A)。
A^:
:
B、〈二;C、++;D^&&;
17.磁盘文件操作中,打开磁盘文件的访问模式常量时,以追加方式打开文件的是(C)
A、.inB、.out;C、・app;D、.ate;
18.C++语言中关于构造函数的说法止确的是(C)
A、构造函数的函数名不必与类名相同;
C、每个类必定有构造函数;
19.以下对模板的说明,正确的是(
A、template
C^template;
20.下列关于虚函数的叙述屮正确的是
A、从虚基类继承的函数都是虚函数;
C、只能通过指针和引用调用虚函数;
B>构造函数只能有一个;
D、构造函数必定有返冋值;
C)O
B、template;
template;
(B)o
B、焜函数不能使静态成员函数;
D、抽象类中的成员函数都是虚函数
21•下列对C++语言中字符数组的描述中,有错误的是(C)。
A、字符数组可以存放字符串;
B、字符数组中的字符串可以进行整体输入输Hh
C、可以在赋值语句中通过赋值运算符“二”对字符数组整体赋值;
D、字符数组的下标从0开始;
22.语句:
structex
{intx;floaty;charz;}example;
下面描述错误的是(B)
A、struct是结构类型的关键字;B、example是用户定义的结构类型名;
C、x,y,z都是结构体成员名;D、structex是用户定义的结构体类型;
23.变量的指针;其含义是指该变量的(B)o
A、值;B、地址;C、名;D、一个标志;
24.—个类的实例化是指(C)
A、定义类;B、指明具体类;C、创建类的对象;D、调用类的成员;
25•在下列函数原型屮,可以作为类AA构造函数的是(D)。
A、voidAA(int);B、intAA();C、AA(int)const;D>AA(int);
26•已知类A是类B的友元,类B是类C的友元,贝'J(D)o
A、类A—定是类C的友元;B、类C一定类A的友元;
C、类C的成员函数可以访问类B的任何对象;
D、类A的成员函数可以访问类B的对彖的任何成员;
27.若用数组名作为函数调用吋的实参,则实际上传递给形参的是(A)。
A、数组首地址B、数组的第一个元素值
C、数组屮全部元素的值D、数组元素的个数
28.当说明一个结构体变量时,系统分配给它的内存是(A)
A、各成员所需内存量的总和
B、结构体屮第一个成员所需内存量
C、成员中占内存量最人的成员所需的容量
D、结构体小最后一个成员所需的内存量
29.若冇说明:
inti,j=2,*p=&i;则能完成i二j赋值功能的语句是(B)
A、i=*p;B、*p二*&j;C>i=&j;D、i=**p;
30•下面有关构造函数的说法不止确的是(D)
A、构造函数名字和类的名字一样
B、构造函数在定义类变量时自动执行
C、构造函数无任何函数类型
D、构造函数冇11只有一个
31•对于任意一个类,析构函数的个数最多为(B)。
A、0B、1C、2;D、任意个;
32.静态数据成员初始化在(C)进行,而且前面不加static,以免与一般静态变量或对象混淆。
A、类体内;B、类体外;
C、构造函数内;D、成员函数体内;
五、填空题
1结构体变量成员的引用方式是(点)—运算符,结构体指针变量成员的引用方
式是使用(指向)—运算符
2对彖的三大基本特性是一多态性、继承性、封装性。
3模板根据对处理数据类型的要求不同可以分为两种类型:
—函数模板—和—
类模板—
4在^include命令中所包含的头文件,可以是—系统—定义的头文件,也可以是—用户—定义的头文件。
5如果把B类的成员函数voidfun()说明为类A的友元函数,则应在类A中加
入语句friendvoidB:
fun();
6所谓赋值兼容原则是指在公有派生情况下,一个—派生—类对象可以作为—基
_类对象来使用。
7如果一个类中有一个或多个纯虚函数,贝I」这个类称为—抽象函数声明虚函
数的方法是在基类11•的成员函数原型前加上关键字_virtual_。
8当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件隐含打开方
式是_ios:
:
in_。
9利用成员函数对双目运算符重载,其左操作数为_this指针—右操作数为—
成员函数参数。
10类模板的使用实际上是先将类模板实例化为一个模板类,再实例化成一个貝体的—对象_。
11C++语言允许定义由不同数据项组成的数据类型,称为—结构体—数组—和—结构体—都是C++语言的构造类型。
12任何类屮都允许有三利访问权限的成员,这三种访问权限的关键字分别是_publicprivatcprotected。
13如果说类B是类A的友元类,则类B的所有成员函数都是类A的友元函数
14运算符重载任然保持其原來的优先级别、—结合性—和—语法结构—
1510C++支持两种多态性:
—编译—时多态性和运行时的多态性。
为了实现多态性,派生类需耍重新定义基类中的—虚函数_。
16对虚函数使用对象指针或引用,系统使用—动态—联编;对虚函数使用对象调用时,系统使用—静态—联编。
17在类的定义中,将_二0—置于虚函数的函数原型末尾可以声明该函数为纯虚函数。
如果一个类中有一个或多个纯虚函数,则称这个类为—抽象类—。
18当使用ofstrcam流类定义一个流对象并打开一个磁盘文件时,文件隐含打开方式是一ios:
:
out_o
19对于派生类,在定义对象时构造函数的执行顺序为:
先执行调用—基类—的造函数,在执行调用—派生类—的构造函数。
20C++提供的预处理命令有嵌入指令、条件编译指令和—宏定义指令—o
六、判断题
1物理地址和逻辑地址都是唯一代表内存单元的地址。
(对)
2C++中,耍进行文件输入输出,必须耍创建流对象。
(对)
3而向对象程序有三大特性:
封装性、继承性与多态性。
(对)
4C++中,一个类可以有多个了类,也可以有多个父类。
(对)
5运算符重载时,参数个数必须固定。
重载函数参数个数与标准运算符保持一致。
(对)
6使用关键字class定义的类中缺省的访问权限是私冇的(private)。
(对)
7与引用参数相对应的实参必须是变量,接收的是对应实参的内存地址。
(对)
8对于每一个派生类对彖,先调用基类的构造函数,然后再调用派生类的构造函
数。
(对)
9C++语言源程序只能在编译时出现错谋信息,而在连接时不出现。
(错)
10在类中不能直接对所定义的数据成员进行初始化。
(对)
11每一个类必须有一个析构函数,而且必须用户口己定义,系统不会口动生成。
(错)
12结构体屮可以声明不同的数据类型,可以包插已经定义的结构体。
(对)
13指针变量是一个特殊性质的变量,用来存放指针的变量,或者就是一个地址变
量。
(对)
14对象引用作为函数参数比用对象指针更方使。
(对)
15C++不允许将构造函数和析构函数声明为友元函数。
(对)
16对单目运算符重载为友元函数,应说明一个形参,重载为成员函数时,不显
示说明形参。
(对)
17所有的函数模板定义都是用关键字template开始的。
(对)
18在私有继承屮,派生类对象可以访问基类的公有成员。
(错)
19虚函数用virtual关键字说明成员函数。
(对)
20cin流通常是与显示器相连的。
(错)
21指向派生类对象的指针可以隐式地转换为指向基类对