我知道的有两种触发多态的方法,即指针可以引用,即:
1.用基类的指针指向派生类的对象引发多态;
2.用基类的引用也能引发多态;
如下列代码:
#include <iostream>
using namespace std;
class A{
public:
virtual void show(){
cout << "i am A" << endl;
}
};
class B: public A {
public:
void show(){
cout << "i am B." << endl;
}
};
void function(A &a){
a.show();
}
int main(){
A *p = new B;
p->show();
function(*p);
return 0;
}
输出结果为:
xy@ubuntu:~/primer$ ./a.out
i am B.
i am B.
可以看到确实都发生了多态现象。
所以可以得出结论:
基类的指针和引用均可以用法多态行为。