在c ++中实现多态的有哪些不同的方法

时间:2014-02-18 11:01:21

标签: c++ inheritance polymorphism

我知道在c ++中有几种不同的方法可以实现多态性。

我知道有三种方法可以做到这一点:

  • 使用继承(通过使用指向基类的指针)
  • 使用虚拟功能
  • 使用抽象类

在关于这个主题的技术讨论中,我被告知我遗漏了一些东西并被搁置了......因此我在这里问了这个问题。

c ++中是否有另一种方法可以解决这个问题,还是我说错了?

2 个答案:

答案 0 :(得分:2)

你的三种方式实际上只有一种:是否基类 abstract是一个实现细节;你需要虚拟 函数,可以在派生类中重写。

除此之外:功能重载和模板都提供 一种形式的多态性,虽然它已经解决了 编译时间,而不是运行时间。就此而言,您可以定义 头文件中的一个类,并提供了几个不同的类 它的实现,取决于编译时间开关; 这也是一种多态性。 (这通常是为了 系统相关代码。多态性被解析为 您正在编译的系统的功能。)

答案 1 :(得分:0)

我认为您的讨论与不同类型的多态性有关。

  1. 编译时多态 - 例如:函数重载,运算符重载。
  2. 运行时多态 - 例如:继承+虚函数+基类指针。