#include<iostream>
using namespace std;
class A {
public:
virtual void abc() {
cout << " A. " << endl;
}
};
class B : public A {
public:
void abc() {
cout << " B. " << endl;
}
};
class C : public B {
public:
void abc() {
cout << " C. " << endl;
}
};
int main() {
A a;
B b;
C c;
// 这样无法识别子类,调用的都是基类方法
A elems[3] = {a,b,c};
for(A each : elems) {
each.abc();
}
// 将子类地址传入指针数组,直接调用子类方法
A *ptr[3] = {&a,&b,&c};
for(int i=0; i<3; i++) {
ptr[i]->abc();
}
return 0;
}