2004程序实习考题

2020-04-02 23:24

一、单项选择题(共20分,每题2分,正确答案只有一项)

1. 抽象类A

A. 至少含有一个纯虚函数 B. 至少含有一个静态函数

C. 其派生类必须提供纯虚函数的实现代码

D. 可以定义抽象类的对象,也可以由派生类生成新类 (A)

2. 以下说法中正确的是:C

A. 一个类可以有不止一个复制构造函数 B. 构造函数的返回值类型是 void

C. 一个类只能定义一个析构函数,但可以定义多个构造函数 D. 一个类只能定义一个构造函数,但可以定义多个析构函数

(C)

3. 下列函数模板中定义正确的是:D

A. template

T1 fun (T1,T2) { return T1 + T2; } B. template< class T>

T fun(T a) { return T + a;} a) tempmlate

T1 fun(T1,T2) { return T1 + T2 ; } b) template

T fun(T a,T b) { return a + b ; } (D)

4. 如果类定义中没有使用 private、protected、或public 关键字,则所有成员C A. 都是 public 成员 B. 都是 proctected 成员 C. 都是 private 成员 D. 不一定 (C)

5. 对于通过 new 运算符生成的对象B A. 在程序结束时自动析构 B.. 执行 delete 操作时才能析构

C. 在包含该 new 语句的函数返回时自动析构

D. 在执行 delete 操作时会析构,如果没有执行delete操作,则在程序结束时自动析构 (B)

6. 如果某函数的返回值是个对象,则该函数被调用时,返回的对象A A. 是通过复制构造函数初始化的 B. 是通过无参数的构造函数初始化的

C. 用哪个构造函数初始化取决于函数中 return 语句是怎么写的 D. 不需要初始化

(A)

7. 以下说法正确的是:C

A. 在静态成员函数中可以调用同类的其他任何成员函数 B. const成员函数不能作用于非 const 对象(可以) C. 在静态成员函数中不能使用 this 指针

D. 在纯虚函数中可以调用同类的其他非虚函数 (C)

8. 如果将运算符 “[]”重载为某个类的成员运算符(也即成员函数),则该成员函数的参数个数是:B

i. 0 个 B. 1个 C. 2个 D. 3个

(B)

9. 编译器根据类模板,在需要的时候能自动生成:D A. 一个或多个相似的函数 B. 一个或多个函数模板 C. 一个或多个对象 D. 一个或多个相似的类 (D)

10. 以下说法不正确的是(假设在公有派生情况下)A(可以将派生类对象赋值给一个基类对象)

A. 可以将基类对象赋值给派生类对象

B. 可以将派生类对象的地址赋值给基类指针 C. 可以将派生类对象赋值给基类的引用 E. 可以将派生类对象赋值给基类对象 (A)

二.以下程序编译、连接都能通过,请写出运行时输出的结果。你认为没有输出的,就写\无输出\共50分)。

1)(5分) int a;

class CA { private : int a; public: void SetA() { a = 10; } CA( int i) { a = i; } int GetA() { return ::a; } };

int main () { int a;

a = 15; ::a = 2;

cout <<::a << \ CA objCA(100); objCA.SetA (); cout <<::a << \

objCA.GetA() << endl; }(全局变量和局部变量) //2,15 //2,15,2

2)(5分) int g = 10;

int SetValue1( int n)

{ n = 10; return n; } int & SetValue2( int & n ) { n = 20; return n; } main() {

int & ref = g;

ref = 100; SetValue1( ref );

cout << g << \ SetValue2(ref); cout << g << \ SetValue2(g) = 300; cout << g << \ int const c = 70; ref = c; ref = 15; cout << ref << \}

//100,20,300,15,70(在引用过程中引用变量和原变量成为完全相同的变量)

3)(4分)

class CSample { int x; public:

CSample() { cout << \ } CSample(int n ) {

x = n; cout << \ } };

main(){ CSample array1[2]; CSample array2[2] = {6,8}; CSample array3[2] = {12}; CSample * array4 = new CSample[3]; } //C1 //C1 //C2,x=6 //C2,x=8 //C2,x=12 //C1 //C1 //C1 //C1

4)(8分)

class Demo { int id; public: Demo(int i) { id = i;

cout << \~Demo()

{ cout << \};

Demo d1(4);

void fun(Demo d) { static Demo d2(2); Demo d3(3); cout << \ }

void main () { cout <<\ fun(d1); cout << \ fun(d1); Demo * p = new Demo(8);(new的空间必须有delete才能析构,否则不能自行析构) } /*

id=4,Con main id=2,Con id=3,Con fun

id=3,Des id=4,Des endmain id=3,Con

fun (全局变量、局部静态变量和全局静态变量在整个程序运行中仅仅构造一次) id=3,Des id=4,Des id=8,Con id=2,Des id=4,Des */

5)(4分) class B { private: int nBVal; public:

void Print() { cout << \al << endl; } void Fun() {cout << \ B ( int n )

{ nBVal = n;} };

class D:public B { private : int nDVal; public:

void Print() { B::Print();

cout << \al<

D( int n) : B(3*n) { nDVal = n; } void Fun()

{ cout << \};

main() { B * pb; D * pd;


2004程序实习考题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:成本会计配套练习题答案1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: