多态性:多态性意味着多种形式。 这意味着拥有多个具有相同功能名称但功能不同的功能。
多态性有两种类型:
运行时多态性
运行时多态性也称为动态多态性。 函数覆盖是运行时多态的一个例子。 函数覆盖意味着当子类包含父类中已经存在的方法时。 因此,子类覆盖了父类的方法。 在函数覆盖的情况下,父类和子类都包含具有不同定义的相同函数。 对函数的调用是在运行时确定的,称为运行时多态性。
通过一个例子来理解这一点:
#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()
是一个具有不同数量参数的重载函数。