C++面向对象程序设计模拟试题五
一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中,只有一个是苻合题目要求的。请将其代码填写在题后的括号内。错选,多选或未选均无分。
1.下列对类的构造函数和析构函数描述正确的是( )。 A)构造函数可以重载,析构函数不能重载 B)构造函数不能重载,析构函数可以重载 C)构造函数可以重载,析构函数可以重载 D)构造函数不能重载,析构函数不能重载 2.在函数定义前加上关键字“inline”,表示该函数被定义为( )。 A)重载函数 B)内联函数 C)成员函数 D)普通函数
3.下面有关重载函数的说明中, ( )是正确的。 A) 重载函数必须具有不同的返回值类型 B) 重载函数形参个数必须不同
C) 重载函数必须具有不同的形参列表 D) 重载函数名可以不同
4.下列有关类与对象的说法中,( ) 是不正确的。 A) 对象是类的一个实列
B) 任何一个对象只能属于一个具体的类 C) 一个类只能有一个对象
D) 类和对象的关糸和数椐类型与变量的关糸类似
5.已知: Print( )函数是一个类的常成员函数,它无返回值,下列表示中,正确的是 ( )。
A)void Print( ) const; B) const void Print( ); C) void const Print( ); D) void Print(const)
6.假定Myclass为一个类,那么下列的函数说明中( )为该类的析构函数。 A) void ~Myclass( ); B) ~Myclass( int n); C) Myclass( ); D) ~Myclass( ) 7.下面类的定义中有( ) 处错误。
class myclass{int i=0; public: void myclass( ); ~myclass(value); }
A) 1 B)2 C)3 D)4
8.说明虚函数的关键字是( )。 A. inline B. virtual C. define D. static 9.cout是某个类的标准对象的引用,该类是( )。 A. ostream B. istream C. stdout D. stdin
10.如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为( )。
A. public B. protected C. private D.static 11.定义类模板时要使用关键字( )。
A. const B. new C. delete D. template 12一个类的所有对象共享的是( )。 A. 私有数据成员 B. 公有数据成员 C. 保护数据成员 D. 静态数据成员 13.静态成员函数没有( )。 A. 返回值 B. this指针 C. 指针参数 D. 返回类型 14.解决多重继承中二义性问题的方法有( )。 A. 只能使用作用域分辨操作符
B. 使用作用域分辨操作符或赋值兼容规则 C. 使用作用域分辨操作符或虚基类 D. 使用虚基类或赋值兼容规则
15.如果在类CTest的外面函数调用CTest::f( );则函数f( )是类CTest的( )。 A. 静态成员函数 B. 非静态成员函数 C. 友元函数 D. 前面都不正确 二、判断正误题(本大题共5小题,每小题2分,共10分)判断正误,在题后的括号内,正确的划上“√”错误的划上”×”。
1.构造函数可以设置默认参数
2.类的析构函数的作用是对象的初始化
3.cout的默认输出对象是键盘, cin的默认输入对象是屏幕 4.抽象类可以用来直接创建对象。 5.常对象可以调用任意成员函数。
三、 填空题(本大题共5小题,每小题2分,共10分)不写解题过程, 将正确的答案写在每小题的空格内,错填或不填均无分。
1.重载运算苻”-” 的函数名为( )。
2.C++中类的用途有两种, 一种是类的实例化, 即生成类的对象, 另一种是通过 ( ),派生出新的类。
3.在下面程序的横线处填上正确的语句, 以实现动态多态。
#include
class Derived: public Base { public: }; int main() {
Base a, *pb;
void Fun() { cout << \ virtual void Fun() { cout << \
}
Derived b; ; pb->Fun( ); return 0;
//调派生类的成员函数Fun( ),以实现动态多态
4.编译时多态性可以用( )函数实现。
5.使用new建立的动态对象在不用时必须用( )删除,以便释放所占用空间。
四、程序分析题(本大题共8小题,每小题3分,共24分)给出下面各程序的输出结果。
1.若有以下程序:
#include
class B: public A { public: }; int main() {
B x(5), y(6,7); return 0;
B(int aa = 0, int bb = 0): A(aa) { b = bb; } ~B() { cout << \ int b;
A(int aa = 0 ){ a = aa; }
~A( ) {cout << \ int a;
}
上面程序的输出结果为:
2.若有以下程序:
#include
class Point { }; int main() {
Point *p = new Point; p->SetPoint(5, 12); p->DisPoint(); delete p; return 0; int x, y;
Point() { x = 0; y = 0; }
void SetPoint(int x1, int y1) { x = x1; y = y1; }
void DisPoint() { cout << \ public:
}
上面程序的输出结果为:
3.若有以下程序:
#include
class Sample { public: };
int Sample::s = 0; int main() {
Sample a(2), b(5), c(8); a.Add( ); b.Add( );
Sample (int i) { n =i; } void Add() { s += n; } static int s;
void Dis() { cout << s << endl; } int n;
c.Dis( ); return 0;
}
上面程序的输出结果为:
4.若有以下程序:
#include
class Base { public: };
class Derived:public Base { public: }; int main() { }
Derived a; Base *p; p=&a; p->Fun(); a.Fun(); return 0;
void Fun() { cout << \void Fun() { cout << \
上面程序的输出结果为:
5.若有以下程序:
#include
template
if (sizeof(T1) > sizeof(T2) ) x = (T1)y; else y = (T2)x;