虚函数部分习题.doc

虚函数部分习题.doc

ID:53080137

大小:57.00 KB

页数:7页

时间:2020-04-01

虚函数部分习题.doc_第1页
虚函数部分习题.doc_第2页
虚函数部分习题.doc_第3页
虚函数部分习题.doc_第4页
虚函数部分习题.doc_第5页
资源描述:

《虚函数部分习题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、虚函数部分习题一.简答题1.什么叫多态性?C++中是如何实现多态性的?2.在c++中,能否声明虚构造函数?为什么?能否声明虚析构函数?有何用途?3.什么叫做抽象类?抽象类有何作用?二.选择1.关于动态联编的下列描述中,是错误的。A.动态联编是以虚函数为基础的B.动态联编是在运行时确定所调用的函数地址的C.动态联编调用函数操作是指向对象的指针或对象引用D.动态联编是在编译时确定操作函数的2.关于虚析构函数的下述描述中,是错误的。A.基类中析构函数为虚析构函数,则派生类中的析构函数也为虚析构函数。B.虚析构函数能保证delet

2、e运算符有效的释放基类及派生类对象。C.将析构函数定义为虚析构函数是因为类中有虚函数。D.虚析构函数并不能实现动态联编。3.关于纯虚函数和抽象类的描述中,是错误的。A.纯虚函数没有函数体。B.抽象类及其派生类都可以定义对象。C.若某个成员函数为纯虚函数,则该类为抽象类。D.抽象类通常在类结构的顶层。三.分析程序的运行结果,并上机验证。1.#includeclassXX{protected:intk;public:XX(intn=5):k(n){}~XX(){cout<<“XX”;}virtualvo

3、idf();};voidXX::f(){cout<f();deletep;return0;}2.#include"stdafx.h"classA{public:virtual~A(){cout<<"A::~A";}};classB:publicA{public:~B(){cout<<"B::~B";}};voidma

4、in(){A*a1;A*a2=newB();Bb;a1=&b;}3.#includeclassA{public:virtual~A(){cout<<"~A";}};classB:publicA{public:B(inti){buf=newchar[i];}virtual~B(){delete[]buf;cout<<"~B";}private:char*buf;};voidfun(A*a){deletea;}voidmain(){A*a=newB(5);fun(a);}4.#include"i

5、ostream.h"classA{public:virtualvoidprint()=0;virtual~A(){cout<<"A::~A";}};classB:publicA{public:B(){cout<<'B'<

6、<"C::~C";}};classD:publicC,publicB{public:D(){cout<<'D'<print();pb->print();deletepa;}5.下列程序中声明一个Mammal类,再由此派生出Dog类,二者都定义Speak()成员函数,基类中定义Speak()为虚函数。主程序中分别声明

7、一个Mammal类和Dog类的对象,再分别用对象名.函数名和指针的形式调用Speak()函数。请填空完成程序,并上机运行验证。#include”iostream.h”ClassMammal{Public:______(1)_______voidSpeak(){cout<<”ThisisaMammal!”<

8、__;Dogd;m.Speak();d.Speak9);ptr=&m;ptr->Speak();_____(3)______;ptr->Speak();}6.#includeclassA{public:virtualvoidf1(){cout<<"A'sf1().";}voi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。