|
|
|
|
移动端

1.12.3 重载与覆盖

《程序员面试笔试真题与解析》本书针对当前各大 IT企业面试笔试中特性与侧重点,精心挑选了 3年以来近百家典型 IT企业的面试笔试真题,这些企业涉及业务包括系统软件、搜索引擎、电子商务、手机 APP、安全关键软件等,面试笔试真题非常具有代表性与参考性。本节为大家介绍重载与覆盖。

作者:猿媛之家来源:机械工业出版社|2017-12-06 17:34

有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研


1.12.3 重载与覆盖

【真题 184】下列对函数 double add(int a , int b)进行重载的描述中,正确的是()。

A.int add(int a ,int b ,int c) B.int add(double a , double b)

C.double add(double a , double b) D.int add(int a , int b)答案:A、B、C。

重载是一种可使函数、运算符等处理不同类型数据或接受不同个数的参数的方法,通过重载,函数可以存在具有相同的名字,但是参数列表不相同的情形(参数的个数不同,或参数的类型不同),这样的同名、但不同参数的函数或者方法之间,互相称之为重载函数或者方法。需要注意的是,不能用返回值来区分重载函数。

通过以上分析可以发现,选项 A中定义的方法与题目中的方法参数个数不同,选项 B与选项 C的方法与题目中的方法参数类型不同,而选项 D与题目中的方法参数个数与类型都相同。因此,选项 A、选项 B和选项 C正确,选项 D错误。

【真题 185】下面有关函数重载的说法中,正确的是()。

A.重载函数必须具有不同的返回值类型  B.重载函数形参个数必须不同

C.重载函数必须有不同的形参列表  D.重载函数名可以不同

答案:C。

重载函数的定义如下:在相同的声明域中的函数名是相同的,而参数表是不同的,即通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数。两个重载函数必须在下列一个或两个方面有所区别:

1)函数有不同参数个数。

2)函数有不同参数类型。根据上述定义可知,函数名相同,而函数的参数类型、参数个数不同,才能构成函数的重载。需要注意的是,返回值不同不能构成重载。所以,选项 C正确,选项 A、选项 B与选项 D错误。

【真题 186】 Overload和 Override的区别是什么? Overload的方法是否可以改变返回值的类型?

答案:Overload(重载)和 Override(覆盖)是多态性的不同表现。其中,重载是在一个类中多态性的一种表现,是指在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型。在使用重载时,需要注意以下几点:

1)重载是通过不同的方法参数来区分的,例如:不同的参数个数、不同的参数类型或不同的参数顺序。

2)不能通过方法的访问权限、返回值类型和抛出的异常类型来进行重载。

3)对于继承来说,如果基类方法的访问权限为 private,那么就不能在派生类中对其进行重载,如果派生类也定义了一个同名的函数,这只是一个新的方法,不会达到重载的效果。

Override是指派生类函数覆盖基类函数,覆盖一个方法并对其重写,以达到不同的作用。在使用覆盖时,需要注意以下几点:

1)派生类中的覆盖方法必须要和基类中被覆盖的方法有相同的函数名和参数。

2)派生类中的覆盖方法的返回值必须和基类中被覆盖的方法的返回值相同。

3)派生类中的覆盖方法所抛出的异常必须和基类中被覆盖的方法所抛出的异常一致或是其子类。

4)基类中被覆盖的方法不能为 private,否则,其子类只是定义了一个方法,并没有对其覆盖。重载与覆盖的区别主要有以下几个方面的内容:

1)覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。

2)覆盖只能由一个方法或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3)覆盖要求参数列表相同;重载要求参数列表不同。

4)覆盖关系中,调用方法体是根据对象的类型(对象对应存储空间类型)来决定;而重载关系是根据调用时的实参表与形参表来选择方法体的。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方

法的重载。Overload的方法是可以改变返回值的类型,但是 Override方法不能改变返回值类型。

【真题 187】一个双目运算符作为类的成员函数重载时,重载函数的参数表中有()个参数。

A.1 B.2 C.3 D.0 答案:A。如果是成员函数重载,则参数一般为类对象的引用,另一个参数由 this指针所指向,所以不显示。

面试笔试真题解析篇

如果是友元函数重载,则有两个参数。所以,选项 A正确。

【真题 188】下面不能重载的操作符是()。

A.= B.< C.sizeof D.% 答案:C。运算符重载实质上是函数重载。在 C++语言中,除了类属关系运算符 “.”、成员指针运算符“ .*”、

作用域运算符“ ::”、sizeof运算符和三目运算符“ ?:”以外,其他所有运算符都可以重载。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

软件架构设计

本书紧紧围绕“软件架构设计”这一主题,立足实践解析了软件架构的概念,阐述了切实可行的软件架构设计方法,提供了可操作性极强的完整的架...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊