第五章习题

本文展示了两个C++程序,分别用于计算球体、圆柱体的体积和表面积,以及正方形、三角形和圆形的面积。程序使用了面向对象编程的概念,包括类的定义、继承和成员函数的实现。通过实例调用,演示了如何通过对象计算几何形状的几何特性。
摘要由CSDN通过智能技术生成
一、填空题
(1)C++的两种联编方式为:  静态  联编和  动态  联编。

(2)C++支持两种多态性,静态联编所支持的多态性被称为  编译时的多态性  、动态联编所支持的多态性被称为  运行时的多态性  。

(3)重载函数在编译时表现出多态性,就是  静态   联编;而虚函数则在运行时表现出多态性是  动态  联编。

(4)为了区分重载函数,把一个派生类中重定义基类的虚函数称为  覆盖   。

(5)如果派生类与基类的虚函数仅仅返回类型不同,其余相同,则C++认为是  使用不恰当的虚函数  。

(6)在构造函数和析构函数中调用虚函数时,采用  静态  联编。

(7)纯虚函数的定义是在虚函数定义的基础上,再让函数等于  0  。

(8)对于包含有纯虚函数的类被称为  抽象类  。


二、选择题(至少选一个,可以多选)

(1)用关键字( A )标记的函数被称为虚函数。
A. virtual                  
B. private                   
C. public                
D. protected

(2)在C++中,要实现动态联编,必须使用( D )调用虚函数。
A. 类名                     
B. 派生类指针              
C. 对象名                
D. 基类指针

(3)下列函数中,可以作为虚函数的是( BD )。
A. 普通函数               
B. 非静态成员函数       
C. 构造函数            
D. 析构函数

(4)在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( B )。
A. 不同                      
B. 相同                        
C. 相容                   
D. 部分相同

(5)使用虚函数保证了在通过一个基类类型的指针(含引用)调用一个虚函数时,C++系统对该调用进行( A ),但是,在通过一个对象访问一个虚函数时,使用( B )。
A. 动态联编               
B. 静态联编                  
C. 动态编译             
D. 静态编译

(6)下面函数原型声明中,(  B  )声明的func()为纯虚函数。
A. void func()=0;                                           
B. virtual void func()=0;
C. vitual void func();                                      
D. virtual void func(){};

(7)若一个类中含有纯虚函数,则该类称为(  C  )。
A. 基类                      
B. 虚基类                      
C. 抽象类                
D. 派生类

(8)假设Myclass为抽象类,下列声明( CD  )是错误的。
A. Myclass& func(int);                                    
B. Myclass * pp;
C. int func(Myclass);                                       
D. Myclass Obj;

(9)下面描述中,( BD  )是正确的。
A. 虚函数是没有实现的函数                               
B. 纯虚函数的实现是在派生类中定义
C. 抽象类是只有纯虚函数的类                            
D. 抽象类指针可以指向不同的派生类


三、判断题

(1)抽象类中只能有一个纯虚数。                                                                           ( 错 )

(2)构造函数和析构函数都不能说明为虚基数。                                                               ( 错 )

(3)程序中可以说明抽象类的指针或引用。                                                                   ( 对 )

(4)一个类中的虚基数说明不仅对基类中的同名函数有影响,而且对它的派生类中的重定义的函数也有影响           ( 错 )

(5)在构造函数和析构函数中调用虚函数时,采用动态联编,即它们所调用的虚函数时是在派生类中重定义的虚函数。 ( 错 )

(6)因为没有为纯虚函数定义代码,所以在构造函数和析构函数内均不可调用纯虚函数。                           ( 对 )


四、简答题

(1)什么叫做多态性?在C++中是如何实现多态的?
答:多态性就是同一符号或名字在不同情况下具有不同解释的现象,即是指同一个函数的多种形态。C++可以支持两种多态性,编译时的多态性和运行时的多态性。
多态性有两种变现形式:一种是不同的对象在收到相同的消息时,产生不同的动作,主要通过虚函数来实现;另一种是同一对象收到相同的消息却产生不同的函数调用,主要通过函数重载来实现。

(2)虚函数与一般重载函数有哪些区别?
答:虚函数与一般重载函数的区别,主要有以下几点:
 重载函数只要求函数有相同的函数名,并且重载函数是在相同作用域中定义的名字相同的不同函数。而虚函数不仅要求函数名相同,而且要求函数的签名、返回类型也相同。也就是说函数原型必须完全相同,而且虚函数特性必须是体现在基类和派生类的类层次结构中。
  重载函数可以是成员函数或友元函数,而虚函数只能是非静态成员函数。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值