没有虚函数的函数重载也是运行时多态

时间:2015-09-22 19:35:04

标签: polymorphism runtime virtual

我知道如何使用虚函数来实现RT多态。通过使用基类引用并在其中存储派生类对象。然后使用此引用调用重写方法。 但这也是真的吗?

class Base
{
 public:
 void show();
 {
  cout << "Base class\t";
 }
};
class Derived:public Base
{
 public:
 void show()
 {
  cout << "Derived Class";
 }
}

int main()
{
 Base b;       //Base class object
 Derived d;     //Derived class object
 d.show();   // is this run time polymorphism??
}

//输出:派生类

1 个答案:

答案 0 :(得分:2)

不,不是。因为这个

 Derived d;
 Base *b = &d;
 b->show();

打印

Base class

然而,对于运行时多态,它将打印

Derived Class

您的示例中没有多态性,因为在调用站点已知对象的确切类型。你也隐藏了基本功能,没有覆盖也没有超载它。