欢迎来到天天文库
浏览记录
ID:27451890
大小:57.00 KB
页数:6页
时间:2018-12-03
《习题9及其解答.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、习题9及其解答9.1选择题1.在C++中,要实现动态联编,必须使用(d)调用虚函数。(a)类名(b)派生类指针(c)对象名(d)基类指针2.下列函数中,不能说明为虚函数的是(c)。(a)私有成员函数(b)公有成员函数(c)构造函数(d)析构函数3.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(a)。(a)相同(b)不同(c)相容(d)部分相同4.C++中,根据(d)识别类层次中不同类定义的虚函数版本。(a)参数个数(b)参数类型(c)函数名(d)this指针类型5.虚析构函数的作用是(c)。(a)虚基类必须定义虚析构函数(b)类对象作用域结束
2、时释放资源(c)delete动态对象时释放资源(d)无意义6.下面函数原型中,(b)声明了fun为纯虚函数。(a)voidfun()=0;(b)virtualvoidfun()=0;(c)virtualvoidfun();(d)virtualvoidfun(){};7.若一个类中含有纯虚函数,则该类称为(c)。(a)基类(b) 纯基类(c)抽象类(d)派生类8.假设Aclass为抽象类,下列正确的说明语句是(b)。(a)Aclassfun(int);(b)Aclass*p;(c)intfun(Aclass);(d)AclassObj;9.下面描述中,正确的是(d)。(a)虚函数是没有实现
3、的函数(b)纯虚函数是返回值等于0的函数(c)抽象类是只有纯虚函数的类(d)抽象类指针可以指向不同的派生类10.构造异质链表的意义是(d)。(a)用数组组织类对象(b)用链表组织类对象(c)用抽象类指针指向派生类对象(d)用抽象类指针构造派生类对象链表9.2阅读下列程序,写出执行结果1.#includeusingnamespacestd;classBclass{public:Bclass(inti,intj){x=i;y=j;}virtualintfun(){return0;}protected:intx,y;};classIclass:publicBclass{pu
4、blic:Iclass(inti,intj,intk):Bclass(i,j){z=k;}intfun(){return(x+y+z)/3;}private:intz;};intmain(){Iclassobj(2,4,10);Bclassp1=obj;cout<fun()<usingnamespacestd;c
5、lassBase{public:virtualvoidgetxy(inti,intj=0){x=i;y=j;}virtualvoidfun()=0;protected:intx,y;};classA:publicBase{public:voidfun(){cout<<"x="<6、bj2;pb=&obj1;pb->getxy(10);pb->fun();pb=&obj2;pb->getxy(100,20);pb->fun();}【解答】x=10y=x*x=100x=100y=20y=x/y=59.3 思考题1.在C++中,使用类体系依靠什么机制实现程序运行时的多态?【解答】在C++中,基类指针可以指向派生类对象,以及基类中拥有虚函数,是支持多态性的前提。程序通过用同一个基类指针访问不同派生类的虚函数重载版本实现程序运行时的多态。C++的虚特性负责自动地在程序运行时把基类指针的关联类型转换成当前指向对象的派生类类型。另外,抽象类机制提供了软件抽象和可扩展性的手段,实7、现运行时的多态性。2.如果一个类的虚函数被声明为私有成员函数,会有语法错误吗?当它作为基类时,可以在应用类体系时实现动态联编吗?请你验证一下。【解答】没有语法错误。但在应用类体系时无法实现动态编联和多态。因为私有成员函数只在类内可见,在类外无法调用,无法在类外通过基类指针实现多态。程序略。3.虚函数和纯虚函数的区别是什么?【解答】虚函数定义时冠以关键字virtual,本身有实现代码,作用是引导基类指针根据指向对象调用类体系中不同重载
6、bj2;pb=&obj1;pb->getxy(10);pb->fun();pb=&obj2;pb->getxy(100,20);pb->fun();}【解答】x=10y=x*x=100x=100y=20y=x/y=59.3 思考题1.在C++中,使用类体系依靠什么机制实现程序运行时的多态?【解答】在C++中,基类指针可以指向派生类对象,以及基类中拥有虚函数,是支持多态性的前提。程序通过用同一个基类指针访问不同派生类的虚函数重载版本实现程序运行时的多态。C++的虚特性负责自动地在程序运行时把基类指针的关联类型转换成当前指向对象的派生类类型。另外,抽象类机制提供了软件抽象和可扩展性的手段,实
7、现运行时的多态性。2.如果一个类的虚函数被声明为私有成员函数,会有语法错误吗?当它作为基类时,可以在应用类体系时实现动态联编吗?请你验证一下。【解答】没有语法错误。但在应用类体系时无法实现动态编联和多态。因为私有成员函数只在类内可见,在类外无法调用,无法在类外通过基类指针实现多态。程序略。3.虚函数和纯虚函数的区别是什么?【解答】虚函数定义时冠以关键字virtual,本身有实现代码,作用是引导基类指针根据指向对象调用类体系中不同重载
此文档下载收益归作者所有