一个特殊的“函数重载”

2017-10-14  本文已影响5人  Closears

思考这样一个问题:在C++中,两个具有相同的函数名,相同的参数列表,但是返回值类型不同的函数,是否可以重载?

答案是:

















可以!

有些朋友可能会奇怪,函数名也相同,参数列表也相同,只有返回值类型不同,这不就相当于重定义了吗?咋有可能通过编译呢?

当你脑中提出这个疑问的时候,就说明你忽略了一种特殊情况,你忽略了关键字const对函数的修饰。
我们不说废话,直接上demo:

一个demo

由图可见:
const的函数和没有const的函数,是会被区别对待的。
const对象(图中对应x)会优先调用被const修饰的函数;而普通对象(图中对应y)会优先调用没有被const修饰的函数。

上一篇 下一篇

猜你喜欢

热点阅读