发布时间 : 星期三 文章C++面向对象程序设计模拟试题三更新完毕开始阅读3b0247c0d5bbfd0a795673cd
C++面向对象程序设计模拟试题三
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.下面有关重载函数的描述中,正确的是( )。
A)重载函数必须具有不同的返回值类型 B)重载函数形参个数必须不同
C)重载函数必须具有不同的形参表
D)重载函数名可以不同
2.假定MyCIass为一个类,那么下列的函数说明中,( )为该类的析构函数。
A)void~MyClass(); B)~MyClass(int n); C)MyClass( ); D)~MyClass( ); 3.( )是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。
A)模板 B)类 C)对象 D)函数 4.下面关于静态成员函数的途术中错语的是( )。
A. 静态成员函数可以有返回值 B. this指针可以指向静态成员函数
C. 静态成员函数可以具有指针参数 D. 静态成员函数可有具有返回值类型 5.定义类模板时要使用关键字( )。 A. private B. public C. delete D. template 6.下列是重载乘法运算符的函数原型声明,其中错误的是( )。 A)MyClass operator*(double,double); B)MyClass operator*(double,MyClass);
C)MyClass operator*(MyClass,double); D)MyClass operator*(MyClass,MyClass); 7.以下( )成员函数表示纯虚函数。
A)virtual int fun(int) B)void fun(int)=0 C)virtual void fun()=0 D)virtual void fun(int){} 8.关于纯虚函数,下列表述中正确的是( )。 A)纯虚函数的声明总是以\结束
C)含有纯虚函数的类是抽象类 9.( )解决二义性问题。
A. 只能使用作用域分辨操作符
C. 使用作用域分辨操作符或虚基类
B)含有纯虚函数的类可以定义对象 D)上面都是错误的 B. 只能使用虚基类 D. 上面都不能
D)虚函数
10.实现编译时的多态性要使用( )。
A)重载函数 B)析构函数 C)构造函数
二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在
每小题的空格内。错填或不填均无分。
1.定义一个函数名为fun,返回值为int,没有参数的纯虚函数的声明是
( )。
2.定义静态成员函数应使用关键字( )。
3.在C++中,如果类的名称是CTest,则此类的构造函数名称为( )。
4.在类的对象被创建时,( )函数会被自动调用。 5.类中数据成员和成员函数的默认访问级别为( )。
1
三、完成程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充完整,
1.请完成下面的程序
#include
using namespace std;
// 使用标准命名空间std
// 测试静态成员类 class Test { private: [1] int count;
// 对象数
public: Test(){ count++; }
// 构造函数, 实现对对象进行计数
static void Show(){ cout << \共有\个对象!\
};
int Test::count = 0;
// 初始化静态数据成员赋初值
int main(void)
// 主函数main(void)
{ Test obj1, obj2, obj3; // 定义对象 Test::Show();
// 显示对象数
return 0; // 返回值0,返回操作系统
}
2.请完成下面的程序
#include
using namespace std;
// 使用标准命名空间std
// 整数类 class Integer { private: int a;
// 数据成员 public:
Integer(int x = 0){ a = x; } // 构造函数 operator int() { return a; }
// 类型转换函数 Integer operator+(const Integer &i) const
// 重载加法运算符+ { return [2] ;
// 返回和
}
};
int main(void)
// 主函数main(void)
{ Integer a(2), b(3), c; // 定义整数对象 c = a + b;
// 求和
cout << c << endl;
// 显示和
// 显示对象数
2
}
return 0; // 返回值0, 返回操作系统
3.请完成下面的程序
#include
int main(void) { }
A< [3] > obj(\obj.Show(); return 0;
// 定义对象 // 显示相关信息
// 返回值0, 返回操作系统
// 主函数main(void)
ElemType a;
// 数据成员 // 构造函数 // 显示a之值
public:
A(ElemType x): a(x){ } void Show() const { cout << a << endl; }
// 预处理命令
// 使用标准命名空间std
四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。
1.阅读下面程序,写出输出结果。
#include
int main(void) {
Point obj1;
const Point obj2(9, 98); cout << obj1.GetX() << endl; obj1.SetX(5);
cout << obj1.GetX() << endl;
3
int x; int y;
// x坐标 // y坐标
// 预处理命令
// 使用标准命名空间std
public:
Point(int a = 0, int b = 0):x(a), y(b){} int GetX() const { return x; } int GetY() const { return y; } void SetX(int a) { x = a; } void SetY(int b) { y = b; }
obj1.SetY(18);
cout << obj1.GetY() << endl; cout << obj2.GetX() << endl; cout << obj2.GetY() << endl; return 0;
// 返回值0,返回操作系统
}
上面程序的输出结果为:
2.阅读下面程序,写出输出结果。
#include
using namespace std;
// 使用标准命名空间std
class Array { private: int *elem; // 数组元素存储空间 int size;
// 数组元素个数
public: Array(int a[], int sz): elem(a), size(sz){ } // 构造函数 int GetSize(){ return size; }
int &operator[](int pos){ return elem[pos - 1]; }
// 重载下标运算符[]
};
int main(void)
{ int a[] = {1, 2, 3, 4, 5}; Array obj(a, 5); obj[1] = 8;
for (int i = 1; i <= obj.GetSize(); i++)
// 依次输出数组各元素之值
cout << obj[i] << \ \
cout << endl;
return 0;
// 返回值0, 返回操作系统
}
上面程序的输出结果为:
3.阅读下面程序,写出输出结果。
#include
using namespace std;
// 使用标准命名空间std
class A { public: A(){ cout << \构造A\ // 构造函数 ~A(){ cout << \析构A\
// 析构函数
};
class B: public A
4