【发布时间】:2016-04-20 12:40:45
【问题描述】:
那就是:函数重载。
我的意思是
base_ptr->derived_class_method()
本质上是
derived_class_method(base* this_ptr)
这是通过函数重载实现的多态性。
通过模板的多态性也可以这样说,包括CRTP等。
因此,考虑到最广泛的实现,所有“各种”多态性似乎都归结为函数重载。
还是我错过了什么?
【问题讨论】:
-
你会说,编程语言可以有哪些多态性?有没有什么特别的东西,你认为,在 C++ 中不存在?
-
您遗漏了一些东西。您可以从this 开始。 (顺便说一句,您的示例非常不清楚。如果
this参数始终具有相同的类型,它是如何重载的?您是否将重载与覆盖混淆了?) -
从概念上讲,这个问题确实有道理。
-
您要么将重载与覆盖混淆,要么否认其中之一的存在,以及 Liskov 替换原则。
-
这是术语问题“我可以称之为函数重载吗?” - 从某种角度来看 - 是的。这实际上意味着什么吗?没有。
标签: c++ polymorphism overloading