C++习题4

更新时间:2023-12-20 14:18:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

习题4

1、 下列对模板的声明,正确的是____C_____。 A)template

B)template

C)template D)template

2、 一个_____C____允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。 A)函数模板 B)模板甲数 C)类模板 D)模板类

3、 类模板的模板参数____D_____。 A)只可作为数据成员的类型 B)只可作为成员函数的返回类型 C)只可作为成员函数的参数类型 D)以上三者皆可

4、 下列程序段中有错的是____C_____。 A)template B)Type

C)func(Type a,b)

D){return (a>b)?(a):(b);}

5、 模板是实现类属机制的一种工具,其功能非常强大,它既允许用户构造类属函数,即___BA①___:也允许用户构造类属类,即___DC②___。 A)模板函数 B)函数模板 C)模板类 D)类模板

6、 类模板的使用实际上是将类模板实例化成一个具体的____DB_____。 A)类 B)对象 C)函数 D)模板类

7、 关于函数模板,描述错误的是( DA )

A) 函数模板必须由程序员实例化为可执行的函数模板 B) 函数模板的实例化由编译器实现

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

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

8、 下列的模板说明中,正确提( AC )(两个答案) A) template B) template

C) template

D) template

9、 假设有函数模板定义如下: Template Max(T a, T b, T &c) { c=a+b; }

下列选项正确的是( AB )(两个答案) A) float x,y; float z; Max(x,y,z); B) int x,y,z; Max(x,y,z);

C) int x,y; float z; Max(x,y,z); D) float x; int y, z; Max(x,y,z);

10、关于类模板,描述错误的是( B D ) A) 一个普通基类不能派生类模板

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

C) 根据建立对象时的实际数据类型,编译器把类模板实例化为模板类 D) 函数的类模板参数须通过构造函数实例化

11、建立类模板对象的实例化过程为( C ) A) 基类派生类 B) 构造函数对象 C) 模板类对象 D) 模板类模板函数

12、需要一种逻辑功能能一样的函数,而编制这些函数的程序文本完全一样,区别只是数据类型不同。对于这种函数,下面不能用来实现这一功能的选项是(D) A)宏函数

B)为各种类型都重载这一函数 C)模板 D)友元函数

13 假设Aclass为抽象类,下列正确的说明语句是(B).

A Aclass fun(int) B Aclass *p Cint fun(Aclass) D Aclass Obj 14 下面描述中,正确的是(D).

A 虚函数是没有实现的函数 B 纯虚函数是返回值等于0的函数 C抽象类是只有纯虚函数的类 D 抽象类指针可以指向不同的派生类 15 C++中,一个接口可以继承(D)个父接口。 A 0 B 1 C 2 D 多个

16 有以下程序段,请写出程序的运行结果:S T。

class S{ public:

~S( ){cout<<”S”<<”\\t”; } };

char fun0() { S s1; throw(‘T’); return ‘0’; } void main(){

try{ cout<

catch(char c) { cout<

17 对于C++而言,单元测试的最小单位一般是类。 18 接口的抽象方法的访问限制符默认为public。

1.1C++程序将可能发生异常的程序块放在 try 中,紧跟其后可放置若干个对应的 catch ,在前面所说的块中或块所调用的函数中应该有对应的 throw ,由它在不正常时抛出 异常 ,如与某一条 catch 类型相匹配,则执行该语句。该语句执行完之后,如未退出程序,则执行 catch后续语句 。如没有匹配的语句,则交给C++标准库中的 termanite 处理。

1.2 throw表达式的行为有些像函数的 函数调用 ,而catch子句则有些像函数的 函数定义 。函数的调用和异常处理的主要区别在于:建立函数调用所需的信息在 编译 时已经获得,而异常处理机制要求 运行 时的支撑。对于函数,编译器知道在哪个调用点上函数被真正调用;而对于异常处理,异常是 随机 发生的,并沿调用链逆向 查找异常处理子句,这与 运行时的 多态是 不一样的 。 3.l 下列关于异常的叙述错误的是(A)。 A.编译错属于异常,可以抛出

B.运行错属于异常

C.硬件故障也可当异常抛出

D.只要是编程者认为是异常的都可当异常抛出 3.2下列叙述错误的是( )。

A.throw语句须书写在时语句块中

B.throw语句必须在try语句块中直接运行或通过调用函数运行 C.一个程序中可以有try语句而没有throw语句

D.throw语句抛出的异常可以不被捕获

3.3 关于函数声明 float fun(int a,int b)throw,下列叙述正确的是( )。 A.表明函数抛出float类型异常 B.表明函数抛出任何类型异常 C.表明函数不抛出任何类型异常

D.表明函数实际抛出的异常 3.4下列叙述错误的是()。

A.catch(…)语句可捕获所有类型的异常 B.一个try语句可以有多个catch语句

C.catch(…)语句可以放在catch语句组的中间

D.程序中try语句与catch语句是一个整体,缺一不可 3.5下列程序运行结果为(A)。 #include

using namespace std; class S{ public:

~S( ){cout<<”S”<<”\\t”; } };

char fun0() { S s1;

throw(‘T’); return ‘0’; }

void main(){

try{ cout<

A.S T B.O S T

4.写出程序运行结果 4.1#include using namespace std;

int a[10]={1,2, 3, 4, 5, 6, 7, 8, 9, 10}; int fun( int i); void main() {int i ,s=0;

for( i=0;i<=10;i++) { try

{ s=s+fun(i);} catch(int)

{cout<<”数组下标越界!”<

cout<<\”<

int fun( int i) {if(i>=10) throw i; return a[i]; }

数组下标越界! S=55

4.2 #include using namespace std; void f();

C.O T D.T

class T {public: T( )

{cout<<\ try

{throw \ catch( char*)

{cout<<\”<

~T( ) {cout<<\ };

void main()

{cout<<\”<< endl; try{ f( ); } catch( char *)

{ cout<<\ cout<<\”<

void f( ) { T t; }

main function constructor exception exception2

main function

本文来源:https://www.bwwdw.com/article/h3w5.html

Top