繁体   English   中英

在C ++中实现多态并将其分类的方法

[英]Methods of achieving polymorphism in C++ and categorizing them

在阅读了C ++ 中的多态性什么是多态性之后,它的用途是什么,如何使用它? 我注意到许多答案在它们列出的实现多态性的方法上有所不同,我想为自己列出一个更全面的列表。

实现多态的机制

  1. 重载(功能或运算符)
  2. 通过继承覆盖功能(无虚拟)
  3. 虚拟功能
  4. 范本
  5. 预处理(例如,使用#define ,它取自第一个链接中的答案)
  6. 标准转化(例如隐式转化)

我想念什么或遗忘什么? 这个清单足够全面吗?

阅读https://catonmat.net/cpp-polymorphism之后,我也对这些机制进行了分类。

临时(也称为运行时多态):

  • 虚拟
  • 覆写

参数化(也称为编译时多态):

  • 范本

子类型化(也称为重载)

  • 超载
  • 超载

胁迫(也称为铸造)

  • 标准转换

这些分类正确吗?


供参考:(摘自https://en.wikipedia.org/wiki/Polymorphism_(computer_science)

最常见的主要多态性类别是:

临时多态性 :为任意一组单独指定的类型定义一个公共接口。

参数多态性 :一种或多种类型不是通过名称指定,而是通过可以表示任何类型的抽象符号指定的。

亚型 (也称为亚型多态性或包含多态性):当一个名称表示通过一些常见的超类相关的许多不同的类的实例。

没有。

这些都没有真正涵盖什么std函数,各种函数视图,变体或什么std做什么。

可以使用其中的一些功能来实现Std函数和类似功能,但是将其中的任何功能称为标准误导。 在接口方面,没有公开的继承。 而且operator()不是模板,而是多态的。

如果您想对此找到好的答案,则可能不得不研究类别或类型理论。 高于我的薪水等级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM