在阅读了Polymorphism in C++和What is polymorphism, what is it for, and how is it used?之后,我注意到许多答案在它们列出的实现多态性的方法上存在差异,我想为自己列出一个更全面的列表。
多态性的形成机制
重载(函数或operators)
#define,这是从第一次#define转换(例如)中得到的答案。隐式conversions),我遗漏了什么?这个列表够全面吗?
在阅读了https://catonmat.net/cpp-polymorphism之后,我也有兴趣对这些机制进行分类。
Ad (也称为运行时多态性):
参数(也称为编译时多态):
子类型(也称为重载)
结焦(亦称铸造)
这些分类正确吗?
供参考:(摘自https://en.wikipedia.org/wiki/Polymorphism_(computer_science)
最常见的主要多态性类别是:
Ad多态:为一组单独指定的类型定义公共接口。
参数多态:当一个或多个类型不是由名称指定,而是由可以表示任何类型的抽象符号指定时。
子类型(也称为子类型多态性或包含多态性):当一个名称表示由某个普通超类关联的许多不同类的实例时。
发布于 2019-11-24 05:30:23
不是的。
这些都没有真正涵盖什么std函数,vatious函数视图,变体,或什么std任何。
Std函数和类似的功能可以使用其中的一些实现,但称其为任何一个都是误导的。接口方面,没有公开的继承。并且operator()不是模板,而是多形性的行为。
如果你想要这方面的好答案,你可能需要深入研究类别或类型理论。比我的工资等级还要高。
https://stackoverflow.com/questions/59014687
复制相似问题