C++谭浩强总复习题4.docx
- 文档编号:295267
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:24
- 大小:17.18KB
C++谭浩强总复习题4.docx
《C++谭浩强总复习题4.docx》由会员分享,可在线阅读,更多相关《C++谭浩强总复习题4.docx(24页珍藏版)》请在冰豆网上搜索。
C++谭浩强总复习题4
习题四
填空题
1、联编是指一个程序模块、调用代码之间互相关联的过程。
根据联编的时机不同,可以分为静态联编和(动态联编)。
2、包含一个或多个纯虚函数的类称为(抽象类)。
3、虚函数应该在(基类)中声明,且不能在派生类中重新定义。
4、纯虚函数是(只有函数声明而没有具体函数功能实现的虚函数)。
5、在析构函数前面加上关键字(virtual)进行说明,称该析构函数为虚析构函数。
6、如果一个基类的析构函数被说明为虚析构函数,则它的派生类中的(析构函数)也是虚析构函数。
7、多态性分为两类:
编译时的多态性和(运行时的多态性),编译时的多态性是通过和(函数)模板实现的。
8、对虚函数的调用有两种方式:
(指针调用)和(对象调用)。
9、实现编译时的多态性的机制称为(静态关联),实现运行时的多态性的机制称为(动态关联)。
10、有一种特殊的虚函数,重定义时不要求同名,这种虚函数是(虚析构函数)。
11、模板可以实现程序设计中的(代码重用),体现了面向对象程序设计的(重用性)。
12、C++模板可以分为(函数模板)和(类模板)。
13、由函数模板实例化后是(模板函数),由类模板实例化后是(模板类)。
14、模板的声明使用关键字(template)。
15、已知
intsum(intn){returnn+n;}
longsum(longn){returnn+n;}
是一个函数模板的两个实例,则该函数模板的定义是(template
Tsum(Tn){returnn+n;})。
选择题
1、下面的4个关键字中,(A)是用来说明虚函数的。
A.virtualB.publicC.protectedD.private
2、实现运行时的多态性要使用(D)。
A.重载函数B.构造函数C.析构函数D.虚函数
3、如果一个类至少有一个纯虚函数,那么该类称为(C)。
A.虚基类B.派生类C.抽象类D.以上都不对
4、下列描述中,(D)是抽象类的特征。
A.可以说明虚函数
B.可以进行构造函数重载
C.可以定义友元
D.不能说明其对象
5、下列关于虚函数的描述中,(C)是正确的。
A.虚函数是一个非成员函数
B.虚函数是一个静态成员函数
C.派生类的虚函数与基类种对应的虚函数具有相同的参数个数和类型
D.虚函数既可以在函数说明时定义,也可以在函数实现时定义
6、下列关于纯虚函数与抽象类的描述中,(C)是错误的。
A.抽象类是指具有纯虚函数的类
B.纯虚函数是一个特殊的虚函数,它没有具体的实现
C.一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类
D.抽象类只能作为基类来用,其纯虚函数的实现由派生类给出
7、下列各函数的说明中,(B)表示纯虚函数。
A.virtualintvf(int);B.voidvf(int)=0;
C.virtualvoidvf()=0;D.virtualvoidvf(int){}
8、虚函数必须是类的(D)。
A.友元函数B.构造函数C.析构函数D.成员函数
9、下列关于虚函数的描述中,(A)是正确的。
A.虚函数不能声明为另一个类的友元函数
B.虚函数不能声明为静态成员函数
C.派生类必须重新定义基类的虚函数
D.如果在重定义虚函数时使用了保留字virtual,则该重定义函数仍然是虚函数
10、多态调用是指(C)。
A.以任何方式调用一个虚函数
B.以任何方式调用一个纯虚函数
C.借助于指向对象的基类指针或引用调用一个虚函数
D.借助于指向对象的基类指针或引用调用一个纯虚函数
11、在C++中,要实现动态联编,必须使用(D)调用虚函数。
A.类名
B.派生类指针
C.对象名
D.基类指针
12、下列函数中,可以作为虚函数的是(D)。
A.普通函数
B.构造函数
C.友元函数
D.析构函数
13、在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数返回值(B)。
A.不同
B.相同
C.相容
D.部分相同
14、假设Aclass为抽象类,下列声明(B)是正确的。
A.Aclassfun(int);
B.Aclass*p;
C.intfun(Aclass);
D.AclassObj;
15、下面描述中,正确的是(D)。
A.虚函数是没有实现的函数
B.纯虚函数的实现只能在直接派生类中定义
C.抽象类是只有纯虚函数的类
D.抽象类指针可以指向不同的派生类
16、当运行程序时实际上是将类模板实例化为一个具体的(D)。
A.类B.对象C.函数D.模板类
17、模板函数的真正代码是在(C)时产生的。
A.源程序中声明函数时B.源程序中定义函数时
C.源程序中调用函数时D.运行执行函数时
18、类模板的模板参数(D)。
A.只可作为数据成员的类型B.只可作为成员的返回值类型
C.只可作为成员函数的参数类型D.以上三者皆可
19、以下关于模板的叙述中,不正确的是(C)。
A.用模板定义一个对象时不能省略参数
B.类模板只能有虚拟参数类型
C.类模板的成员函数都是模板函数
D.类模板本身在编译中不会生成任何代码
20、如果有如下函数模板的定义:
template
Tfunc(Tx,Ty)
{returnx+y;}
则对函数func调用不正确的是(C)。
A.func(3,5);B.func<>(3,5);
C.func(3,2.5);D.func
判断题
1、在C++中,要实现动态联编,可以使用基类指针调用虚函数。
√
2、构造函数可以作为虚函数使用。
N
3、虚函数是没有实现的函数。
N
4、在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数返回值部分相同。
N
5、抽象类是只有纯虚函数的类。
N
6、构造函数可以作为虚函数。
N
7、纯虚函数是一个特殊的虚函数,它没有具体的实现。
√
8、虚函数的声明需要使用关键字protected。
N
9、设置虚函数的目的是为了消除二义性。
N
10、抽象类只能作为基类使用,其纯虚函数的实现由派生类来完成。
√
分析题
1、
#include
classA
{
public:
A()
{
cout< "; } virtual~A() { cout< "; } virtualvoidf() { cout< "; } }; classB: publicA { public: B() { cout< "; } virtual~B() { cout< "; } voidf() { cout< "; } }; voidmain() { Aa=A(); Bb=B(); cout< a.f(); b.f(); cout< A*p; p=&b; p->f(); cout< } 2、 #include classshape { public: shape(){}; virtual~shape() { cout<<"Exectingshapedtor"< } }; classCircle: publicshape { public: Circle(){}; ~Circle() { cout<<"ExectingCircledtor"< } }; voidmain() { shape*pShape=newCircle; deletepShape; } 3、 #include usingnamespacestd; classBase { private: intx; public: Base(inta=0){x=a;} virtualvoidfun(){cout<<"Basefun"< virtual~Base(){cout<<"~Base"< }; classDerived: publicBase { private: inty; public: Derived(inta=0,intb=0): Base(a){y=b;} voidfun(){cout<<"Derivedfun"< ~Derived(){cout<<"~Derived"< }; voidGFun(Base*p) {p->fun();} intmain() { Derived*p=newDerived; GFun(p);deletep; return0; } 4、 #include classBase { public: virtualintfunc(){return10;} }; classDerived: publicBase { public: intfunc(){return80;} }; voidmain() { Derivedd; Base&b=d; cout< cout< : func()< } 5、 #include classbase { public: virtualvoidwho(){cout<<"baseclass1"< }; classderive1: publicbase { public: voidwho(){cout<<"derive1class2"< }; classderive2: publicbase { public: voidwho() {cout<<"derive2class3"< }; voidmain() { baseobj1,*p; derive1obj2; derive2obj3; p=&obj1; p->who(); p=&obj2; p->who(); p=&obj3; p->who(); obj2.who(); obj3.who(); } 6、 #include #include<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 谭浩强总 复习题