多态的原理分析
在面向对象的语言中,封装、继承、多态三大特性。我们今天说说C++中多态的实现原理。
多态往往是用来在继承中,子类中的某些行为与父类中的不同,但是为了降低调用的耦合度,我们就定义出,一个对象中有不同的形态,当然是相对与传的对象。
在C++中多态
在c++中多态就是要满足两个要求,当然前提是在继承中,因为有继承才为了满足一些要求,才出现了多态。
1)必须在继承中,存在虚函数,并且有虚函数重写 (覆盖)
2)必须是父类的指针或者引用调用重写的虚函数。
多态有什么用呢?
我们来举个例子:
#include <iostream>
#include <Windows.h>
using namespace std;
class AA
{
public:
virtual void Show()
{
cout << "AAShow()" << endl;
}
virtual void Display()
{
cout << "AADisplay()" << endl;
}
private:
int _a;
};
class BB : public AA
{
public:
virtual void Show()
{
cout << "BBShow()" << endl;
}
virtual void Display()
{
cout << "BBDisplay()" << endl;
}
private:
int _b;
};
// 有个调用函数需要调用不同类中的函数。
void Fun(AA& p)
{
p.Show();
}
int main()
{
AA a; // 父类
BB b; // 子类
Fun(a);
Fun(b);
system("pause");
return 0;
}
上面代码打印结果会是一样吗?