一.C++实现多态的条件
1.派生类对象必须赋值给基类的引用或者指向基类的指针。
2.派生类的继承方式必须是公有继承public。
如果是protected继承或者是private继承,那么子类的所有方法只能在内部访问,这时候就不需要多态了。一般会有语法报错。
3.基类中的同名函数必须定义为虚函数。
举个例子:
#include<iostream>
using namespace std;
int main()
{
class B { public: virtual void f() { cout << "我是B" << endl; }; };
class P :public B { public:void f() { cout << "我是P" << endl; } };
class Q :public B { public:void f() { cout << "我是Q" << endl; } };
P p;
Q q;
B b1 = p; //这种情况只能是调用父类的函数
b1.f();
B& b2= p;
b2.f();
B& b3 = q;
b3.f();
}
运行结果: