c ++中运行时和编译时多态的区别

时间:2015-06-07 12:36:54

标签: c++ polymorphism

我在这两种多态性之间感到困惑,请通过简单的例子来帮助我,因为我对c ++完全不熟悉。只给我一些基本的想法。

1 个答案:

答案 0 :(得分:2)

多态性意味着编写通用代码以使用不同的对象而不知道它们的确切类型。

静态绑定是一种允许编译器解析在编译时调用的类型的属性。但是可以存在没有多态性的静态绑定。编译时多态性是使用函数和运算符重载来实现的,其中编译器具有关于数据类型的所有先验知识而没有。需要的参数,以便它可以在编译时选择适当的函数。

动态绑定是一种允许在运行时决定类型的属性。但是可以存在没有多态性的动态绑定。如果动态绑定用于编写与层次结构中的多个类的对象一起工作的通用代码,那么它将是动态多态。运行时多态性由虚函数实现(使用关键字virtual在基类中声明的成员函数,其由派生类重新定义为同名)。