C++面向对象程序设计模拟试题一
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.说明虚函数的关键字是( b )。
A)inline B)virtual C)define D)static 2.在标准C++中,每个程序中都必须包含有这样一个函数,该函数的函数名为( a )。
A)main B)MAIN C)name D)function 3.cout是某个类的标准对象的引用,该类是( a )。 A)ostream B)istream C)stdout D)stdin
*4.如果在类外的非类的成员函数中有函数调用CPoint::func();则函数func()是类CPoint的( c )。 ----------静态成员 A)私有静态成员函数 B)公有非静态成员函数 C)公有静态成员函数 D)友元函数
*5. 如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为( c )。
A)public B)protected C)private D)static 6.一个类的所有对象共享的是( D )。 A)私有数据成员 B)公有数据成员 C)保护数据成员 D)静态数据成员 *7.动态联编所支持的多态性称为( d )。 A)虚函数 B)继承 C)编译时多态性 D)运行时多态性 8.定义类模板时要使用关键字( D )。 A)const B)new C)delete D)template 9.对虚基类的定义( a )。 A)不需要使用虚函数 B)必须使用虚函数 C)必须使用private D)必须使用public 10.类类型转换函数( a )。 A)不能带有参数 B)只能带一个参数 C)只能带2个参数 D)只能带3个参数 二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。
*1.在用C++进行程序设计时,最好用( new )代替malloc。 2.函数模板中紧随template之后尖括号内的类型参数都要寇以保留字( class或typename )。 3.编译时多态性可以用( 重载 )函数实现。
4.拷贝构造函数用它所在类的( 对象 )作为参数。 5.用关键字static修饰的类的成员称为( 静态 )成员。
三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。 *1.阅读下面程序,写出输出结果。 #include
class Array {
public: Array(int a[], int iSize):elem(a), size(iSize) { } int GetSize() { return size; } int &operator[](int i) { return elem[i - 1]; }
private: int *elem; int size; };
int main() { int s[]={3, 7, 2, 1, 5}; Array ar(s, 5); ar[1] = 9; for (int i = 1; i <= 5; i++) { cout << ar[i] << \ \ } cout << endl; return 0; }
上面程序的输出结果为:
2.阅读下面程序,写出输出结果。
#include
template
int main() { int a[] = { 5, 6, 8}; double b[] = {6.8, 9.6}; Print(a, sizeof(a) / sizeof(int)); Print(b, 2); cout << endl; return 0; }
上面程序的输出结果为:5 6 8 6.8 9.6
3.阅读下面程序,写出输出结果。 #include
class Test {
public: Test(int n):num(n) { count++; } ~Test() { } void Print() const;