自考C++试题及答案(9套合集) 下载本文

B. 析构函数 C. 友元函数 D. 拷贝构造函数

15. 下列不能作为类的成员的是() A. 自身类对象的指针 B. 自身类对象

C. 自身类对象的引用 D. 另一个类的对象

16. 下列不是描述类的成员函数的是() A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数

17. 关于对象概念的描述中,说法错误的是() A. 对象就是C语言中的结构变量

B. 对象代表着正在创建的系统中的一个实体 C. 对象是类的一个变量

D. 对象之间的信息传递是通过消息进行的

18. 派生类的构造函数的成员初始化列表中,不能包含() A. 基类的构造函数 B. 基类的对象初始化 C. 派生类对象的初始化

D. 派生类中一般数据成员的初始化

19. 关于new运算符的下列描述中,错误的是() A. 它可以用来动态创建对象和对象数组

B. 使用它创建的对象或对象数组可以使用运算符delete删除 C. 使用它创建对象时要调用构造函数 D. 使用它创建对象数组时必须指定初始值

20. 假定一个类的构造函数为A(int aa,int bb){a=aa++;b=a*++bb;},则执行A x(4,5);语句

后,x.a和x.b的值分别为() A. 4和5 B. 4和20 C. 4和24 D. 20和5

二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答 案。错填、不填均无分。

1. 在C++中,编译指令都是以___(符号)开始。

2. 在函数前面用___保留字修饰时,则表示该函数表为内联函数。 3. 执行下列程序

int a=21,j=16;

cout.setf(ios::hex); cout<

cout.unsetf(ios::hex); cout<

程序的输出结果是___。

4. 在单继承和多继承方式中,面向对象的程序设计应尽量使用___继承。 5. 函数模板中紧随template之后尖括号内的类型参数都要冠以保留字___。 6. 在C++中,访问指针所指向的对象的成员使用___运算符。

7. 定义类的动态对象数组时,系统只能够自动调用该类的___构造函数对其进行初始化。 8. 局部对象和全局对象中,在同一程序中___生存期最长。

9. this指针始终指向调用成员函数的___。

10. 派生类的主要用途是可以定义其基类中___。

11. 在用class定义一个类时,数据成员和成员函数的默认访问权限是___。 12. 使用new为int数组动态分配10个存储空间是___。 13. 类模板用来表达具有___的模板类对象集。

14. 如果通过同一个基类派生一系列的类,则将这些类总称为___。 15. 面向对象的四个基本特性是多态性、继承性、和封装性___。 16. 所有模板都是以___关键字和一个形参表开头的。

17. 在C++语言中,访问一个对象的成员所用的成员运算符是___。

18. 开发一个C++语言程序的步骤通常包括编辑、___、连接、运行和调试。 19. 执行下列代码

string str(\cout<

20. 定义___函数时,应在参数个数或参数类型上有所不同。

三、改错题(本大题共5小题,每小题4分,共20分) 1. #include

#include #include using namespace std; class A {public:

A(const char *na){strcpy(name,na);} private:

char name[80]; };

class B:public A { public:

B(const char *nm):A(nm){} void show(); };

void B::show()

{ cout<<\}

void main() { B b1(\b1.show(); }

2. 下面的程序有错误,请修改。 #include class A {private: int a; public:

void func(B &); A(int i){a=i;} };

class B {private: int b;

friend void A::func(B &); public:

B(int i){b=i;} };

void A::func(B& r) {a=r.b;

cout<

void main() { B bt(3); A at(10); at.func(bt); }

3. #include class Test {private: int x,y=20; public:

Test(int i,int j){x=i,y=j;} int getx(){return x;} int gety(){return y;} };

void main()

{Test mt(10,20);

cout<

4. #include class A {private: int x,y; public:

void fun(int i,int j) {x=i;y=j;} void show()

{cout<

void main() {A a1; a1.fun(2); a1.show(); }

5. #include class A {private: int x; protected: int y; public:

A(int i,int j){x=i;y=j;}

};

class B:public A {public:

B(int a,int b):A(a,b){}

void show(){cout<

void main() {B b(8,9); b.show(); }

四、完成程序题(本大题共5小题,每小题4分,共20分) 1. 完成下面类中成员函数的定义。

#include class vehicle {protected: int size; int speed; public:

void set(int s){speed=s;} _____get(){return speed/10;} };

class car:public vehicle { public:

int get(){return speed;} };

class truck:public vehicle { public:

int get(){return speed/2;} };

int max(______)

{ if(v1.get()>v2.get()) return 1; else

return 2; }

void main() { truck t; car c;

t.set(160); c.set(80);

cout<

2. 完成下面类中成员函数的定义。 #include #include using namespace std; class str {private: char *st; public: