文档库 最新最全的文档下载
当前位置:文档库 › 《面向对象程序设计Ⅱ》期末复习资料5

《面向对象程序设计Ⅱ》期末复习资料5

《面向对象程序设计Ⅱ》期末复习资料5
《面向对象程序设计Ⅱ》期末复习资料5

《面向对象程序设计Ⅱ》期末复习资料之五:模版一、选择题

1.关于函数模板,描述错误的是()。(A)

A.函数模板必须由程序员实例化为可执行的函数模板

B.函数模板的实例化由编译器实现

C.一个类定义中,只要有一个函数模板,则这个类是类模板

D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

2.下列的模板说明中,正确的是()。(C)

A.template < typename T1, T2 >

B.template < class T1, T2 >

C.template < class T1, class T2 >

D.template ( typename T1, typename T2 )

3.假设有函数模板定义如下:

template

Max( T a, T b ,T &c)

{ c= a + b ; }

下列选项正确的是()。(B)

A.int x, y; char z ; B.double x, y, z ;

Max( x, y, z ) ; Max( x, y, z ) ;

C.int x, y; float z ; D.float x; double y, z ;

Max( x, y, z ); Max( x, y, z ) ;

4.关于类模板,描述错误的是()。(D)

A.一个普通基类不能派生类模板

B.类模板从普通类派生,也可以从类模板派生

C.根据建立对象时的实际数据类型,编译器把类模板实例化为模板类

D.函数的类模板参数须通过构造函数实例化

5.建立类模板对象的实例化过程为()。(C)

A.基类--派生类B.构造函数--对象

C.模板类--对象D.模板类--模板函数

6.在C++中,容器是一种()。(D)----第10章内容

A.标准类B.标准对象

C.标准函数D.标准类模板

二、阅读下列程序,写出执行结果

1.#include

template

void fun( T &x, T &y )

{

T temp;

temp = x; x = y; y = temp;

}

void main()

{

int i , j;

i = 10; j = 20;

fun( i, j );

cout << "i = " << i << '\t' << "j = " << j << endl;

double a , b;

a = 1.1;

b = 2.2;

fun( a, b );

cout << "a = " << a << '\t' << "b = " << b << endl;

}

参考答案:

i=20 j=10

a=2.2 b=1.1

2.#include

template

class Base

{

public:

Base( T i , T j ) { x = i; y = j; }

T sum() { return x + y; }

private:

T x , y;

} ;

void main()

{

Base obj2(3.3,5.5);

cout << obj2.sum() << endl;

Base obj1(3,5);

cout << obj1.sum() << endl;

}

参考答案

8.8

8

三、综合编程题

@@@1.使用函数模板实现对不同类型数组求平均值的功能,并在main()函数中分别求一个整型数组和一个单精度浮点型数组的平均值。

参考答案:

#include

template

float average( T *array,int size )

{

T sum = 0;

for( int i=0; i

sum += array[i];

return sum / size;

}

void main()

{

int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

float b[] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10 };

cout << "Average of array a :" << average( a,10 ) << endl;

cout << "Average of array b :" << average( b,10 ) << endl;

}

@@@2. 建立结点包括一个任意类型数据域和一个指针域的单向链表类模板。在main()函数中使用该类模板建立数据域为整型的单向链表,并把链表中的数据显示出来。

参考答案:

#include

template

class List

{

public:

List( T x ) { data = x; }

void append( List *node )

{

node->next = this;

next = 0;

}

List *getnext() { return next; }

T getdata() {return data; }

private:

T data;

List *next;

};

void main()

{

int i, idata, n, fdata;

cout << "输入结点的个数:";

cin >> n;

cout << "输入结点的数据域:";

cin >> fdata;

List headnode( fdata );

List *p, *last;

last = &headnode;

for( i=1; i

{

cin >> idata;

p = new List ( idata );

p->append( last );

last = p;

}

cout << "链表已经建立!" << endl;

cout << "链表中的数据为:" << endl;

p = &headnode;

while( p )

{

cout << p->getdata() << endl;

p = p->getnext();

}

}

相关文档