C++ 多态

来源:这里教程网 时间:2026-02-16 16:05:01 作者:

多态是 OOP 的一个特征,它允许对象在不同条件下表现不同。在 C++ 中,我们有两种类型的多态:

1)编译时多态 – 这也称为静态(或早期)绑定。

2)运行时多态 – 这也称为动态(或晚期)绑定。

编译时多态

函数重载和运算符重载是编译时多态的完美例子。

编译时多态示例

在这个例子中,我们有两个具有相同名称但参数数量不同的函数。根据我们在函数调用期间传递的参数确定要调用哪个函数,这就是为什么它被视为多态的一个例子,因为在不同的条件下输出是不同的。因为,在编译期间确定调用,这就是为什么它被称为编译时多态。

#include <iostream>using namespace std;class Add {public:  int sum(int num1, int num2){     return num1+num2;  }  int sum(int num1, int num2, int num3){     return num1+num2+num3;  }};int main() {  Add obj;  //This will call the first function  cout<<"输出: "<<obj.sum(10, 20)<<endl;  //This will call the second function  cout<<"输出: "<<obj.sum(11, 22, 33);  return 0;}输出:
输出: 30输出: 66

运行时多态

函数覆盖是运行时多态的一个例子。

函数覆盖:当子类声明一个已存在于父类中的方法时,这称为函数覆盖,这里子类覆盖父类。

在函数覆盖的情况下,我们有两个相同函数的定义,一个是父类,一个是子类。在运行时确定对函数的调用,以决定调用函数的哪个定义,这就是它被称为运行时多态的原因。

运行时多态示例

#include <iostream>using namespace std;class A {public:  void disp(){     cout<<"Super Class Function"<<endl;  }};class B: public A{public:  void disp(){     cout<<"Sub Class Function";  }};int main() {  //Parent class object  A obj;  obj.disp();  //Child class object  B obj2;  obj2.disp();  return 0;}

输出:

Super Class FunctionSub Class Function

相关推荐