《面向对象程序设计》(本科) 期末试卷(B)(时间120分钟)
学院:信息工程 班级: 姓名: 学号:
一、选择题(在每小题给出的四个选项中,选择正确的一项。每小题2分,共计30分)
1.在C++语言中,自定义的标识符( )。
A、能使用关键字并且不区分大小写
B、不能使用关键字并且不区分大小写
C、能使用关键字并且区分大小写
D、不能使用关键字并且区分大小写
2.对类的构造函数和析构函数描述正确的是( )。
A、构造函数可以重载,析构函数不能重载
B、构造函数不能重载,析构函数可以重载
C、构造函数可以重载,析构函数也可以重载
D、构造函数不能重载,析构函数也不能重载
3.类的析构函数的作用是( )。
A、一般成员函数 B、类的初始化 C、对象初始化 D、删除对象。
4.下面对于友元函数描述正确的是( )。
A、友元函数的实现必须在类的内部定义
B、友元函数是类的成员
C、友元函数破坏了类的封装性和隐藏性
D、友元函数不能访问类的私有成员
5.C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过( )派生了新的类。
A、复用 B、继承 C、封装 D、引用
6.下列虚基类的声明中,正确的是( )。
A、class virtual B:public A
B、virtual class B:public A
C、class B:public A virtual
D、class B: virtual public A
7.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为( )
A、main B、MAIN C、 name D、 function
8.下列有关运算符重载描述正确的是( )
A、运算符的重载是多态性的一种表现
B、C++可以通过运算符的重载创造新的运算符
C、C++中所有运算符都可以作为非成员函数重载
D、重载运算符时可以改变其结合性
9.class Myclass{
int value;
public:
Myclass(int n): value(n) { }
int getValue( )const { return vlaue; }
};
则类的构造函数的个数是( )
A、1个 B、2个 C、3个 D、4个
10.在语句cout << data;中,cout是( )。
A、变量名 B、类名 C、对象名 D、函数名
11.模板的使用是为了( )。
A、提高代码的可重用性 B、提高代码的运行效率
C、加强类的封装性 D、实现多态性
12.若Fraction为类重载前增运算符++,应在类体中将其声明为( )。
A、Fraction& operator ++ ( ); B、Fraction& operator ++ (int);
C、friend Fraction& operator ++ ( ); D、friend Fraction& operator ++ (int)
13.关于动态存储分配,下列说法正确的是( )。
A、new和delete是C++语言中专门用于动态内存分配和释放的函数
B、动态分配的内存空间也可以被初始化
C、当系统内存不够时会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间
D、当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new
14.在C++中用来实现运行时多态性的是( )。
A、重载函数 B、析构函数 C、构造函数 D、虚函数
15.在一个类体的下列声明中,正确的纯虚函数声明是( )。
A、 virtual void vf()=0; B、void vf(int)=0;
C、virtual int vf(int); D、virtual void vf(int) { }
二、填空题(在下划线处填写答案。每小题2分,共计20分)
1.设有定义语句:int a=12;,则表达式a*=2+3的运算结果是 。
2.从实现的角度划分,C++所支持的两种多态性分别是 时的多态性和运行时的多态性。
3.C++标准库中的异常层次的根类为 类。
4.支持cout和cin这两个流对象的内部函数体是在一个名为 的头文件中。
5.对赋值运算符进行重载时,应声明为 函数。
6.类的成员根据其访问权限可分为3种:公有类型(public)、私有继承(private)和保护继承(protected),其中,类的封装性通过 和保护继承(protected)部分体现的。
7.MFC类库中绝大多数类都源自根类 类。
8.将—个函数声明为一个类的友元函数必须使用关键字 。
9.C++支持面向对象程序设计的四个要素是:抽象性、 、继承性和多态性。
10.模板分为函数模板和 模板。
三、 运行结果题(写出下列程序的运行结果,每小题5分,共计20分)
1. #include
#include
class ok3
{ char a[20];int b;void kk(){cout<<"私有属性成员的使用\n";}
public:void inab(char aa[],int bb){strcpy(a,aa);b=bb;}
};
void main()
{
ok3 x;
x.inab("面向对象",321);
x.outab();
}
2. #include
class wang
{
int a,b,c;
public:wang(int t1,int t2,int t3){a=t1;b=t2;c=t3;cout<<"三个参数"<
wang(int t1,int t2){a=t1;b=t2;cout<<"二个参数"<
wang(int t1){a=t1;cout<<"一个参数"<
wang(){cout<<"不带参数"<
};
void main()
{
wang x(1,2,3);
wang y(11,22);
wang z(33);
}
3. #include
class mg{
double m;static double sm;static int sn;
public:mg(double m0){m=m0;sm=sm+m0;sn++;}
~mg(){sm=sm-m;sn--;}
static void disp(){ cout<<"总重量为:"<
cout<<"总数为:"<
};
double mg::sm=0;int mg::sn=0;
void main()
{
mg x1(7),x2(5),x3(8),x4(3);x2.~mg();
x1.disp();x4.disp();
}
4. #include
class A{public:
virtual void v1(){cout<<"A中的v1\n"; a1();}
void a1(){cout<<"A中的a1\n"; v2();}
virtual void v2(){cout<<"A中的v2\n";} };
class B:public A{public:
void v1(){cout<<"B中的v1\n"; a1();}
void b1(){cout<<"B中的b1\n"; v1();}
void v2(){cout<<"B中的v2\n";} };
void main()
{ B b; b.b1();
}
四、程序设计题(每小题10分,共计30分)
1.声明一个Rectangle类,有长itsWidth、宽itsLength等属性,重载其构造函Rectanle( )和Rectangle(int width,int length)。
2.编写一个程序,采用一个类Rectangle计算两个给定的长方形的周长和面积。
3.定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。
本文来源:https://www.2haoxitong.net/k/doc/07480936360cba1aa911da18.html
文档为doc格式