首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++多态性的实现及分类方法

C++多态性的实现及分类方法
EN

Stack Overflow用户
提问于 2019-11-24 04:33:05
回答 1查看 379关注 0票数 0

在阅读了Polymorphism in C++What is polymorphism, what is it for, and how is it used?之后,我注意到许多答案在它们列出的实现多态性的方法上存在差异,我想为自己列出一个更全面的列表。

多态性的形成机制

重载(函数或operators)

  • Overriding函数通过继承(没有virtual)

  • Virtual函数)

  • Templates

  • Preprocessing (用于ex )。使用#define,这是从第一次#define转换(例如)中得到的答案。隐式conversions)

,我遗漏了什么?这个列表够全面吗?

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

Ad (也称为运行时多态性):

  • Virtual
  • Overriding

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

  • Templates

子类型(也称为重载)

  • Overloading
  • Overloading

结焦(亦称铸造)

  • 标准转换

这些分类正确吗?

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

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

Ad多态:为一组单独指定的类型定义公共接口。

参数多态:当一个或多个类型不是由名称指定,而是由可以表示任何类型的抽象符号指定时。

子类型(也称为子类型多态性或包含多态性):当一个名称表示由某个普通超类关联的许多不同类的实例时。

EN

回答 1

Stack Overflow用户

发布于 2019-11-24 05:30:23

不是的。

这些都没有真正涵盖什么std函数,vatious函数视图,变体,或什么std任何。

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

如果你想要这方面的好答案,你可能需要深入研究类别或类型理论。比我的工资等级还要高。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59014687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档