C ++中的多态性和我的考试

辛戈

几天前,我进行了C ++考试,但遇到了这个问题,但我发现尚不清楚,这个问题是:

解释术语“多态性”,“虚函数”和“覆盖”之间的区别。通过使用示例获取矩形和三角形的形状区域,编写两个不同的代码段以显示多态性的实现以及多态性和虚函数的实现。
给出两个代码段的输出示例。

而根据Absolute C ++ 5th p669定义的多态性是:

多态性是指通过后期绑定机制将多种含义与一个函数名称关联的能力。因此,多态,后期绑定和虚函数实际上都是同一主题。

从这个定义中我可以理解,不使用虚函数就没有多态性,不是吗?所以这个问题没有两个不同的代码片段实现,对吧?使用虚函数只有一个

我的问题是:这是一个有效的问题吗?

一切都在流动

我的问题是:这是一个有效的问题吗?

不,这与预期的答案似乎只有虚函数提供c ++中的多态性”无关这个问题太狭窄了,容易引起误解。

多态性是指通过后期绑定机制将多种含义与一个函数名称关联的能力。因此,多态,后期绑定和虚函数实际上都是同一主题

从这个定义中我可以理解,不使用虚函数就没有多态性,不是吗?

实际上,您可以具有不带virtual功能的多态

这称为静态多态,查找CRTP模式SFINAE

好吧,强调后期绑定实际上缩小了动态多态性和(纯)virtual功能的问题。但是恕我直言,这仍然是一个糟糕的考试,问题太狭窄/不清楚。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章