易百教程

7、C++中有哪些不同类型的多态性?

多态性:多态性意味着多种形式。 这意味着拥有多个具有相同功能名称但功能不同的功能。
多态性有两种类型:

运行时多态性
运行时多态性也称为动态多态性。 函数覆盖是运行时多态的一个例子。 函数覆盖意味着当子类包含父类中已经存在的方法时。 因此,子类覆盖了父类的方法。 在函数覆盖的情况下,父类和子类都包含具有不同定义的相同函数。 对函数的调用是在运行时确定的,称为运行时多态性。
通过一个例子来理解这一点:

#include <iostream>  
using namespace std;  
class Base  
{  
    public:  
    virtual void show()  
    {  
        cout<<"Yiibai";  
     }  
};  
class Derived:public Base  
{  
    public:  
    void show()  
    {  
        cout<<"Yiibai tutorial";  
    }  
};  

int main()  
{  
    Base* b;  
    Derived d;  
    b=&d;  
    b->show();  
                return 0;  
}

运行结果如下:

Yiibai tutorial

编译时多态性
编译时多态性也称为静态多态性。 在编译时实现的多态性称为编译时多态性。 方法重载是编译时多态的一个例子。
方法重载:方法重载是一种技术,它允许您拥有多个具有相同函数名称但具有不同功能的函数。
方法重载可以在以下基础上实现:

  • 重载函数的返回类型。
  • 传递给函数的参数的类型。
  • 传递给函数的参数数量。

通过一个例子来理解这一点:

#include <iostream>  
using namespace std;  
class Multiply  
{  
   public:  
   int mul(int a,int b)  
   {  
       return(a*b);  
   }  
   int mul(int a,int b,int c)  
   {  
       return(a*b*c);  
  }  
 };  
int main()  
{  
    Multiply multi;  
    int res1,res2;  
    res1=multi.mul(2,3);  
    res2=multi.mul(2,3,4);  
    cout<<"\n";  
    cout<<res1;  
    cout<<"\n";  
    cout<<res2;  
    return 0;  
}

运行结果:

6
24

在上面的示例中,mul() 是一个具有不同数量参数的重载函数。