class A {
public:
int numA;
public:
A(int n):numA(n) {
}
virtual A* print(A* a) {
cout << 'A' << endl;
return a;
}
};
class B: public A {
public:
int numB;
public:
B(int n):A(7), numB(n) {
}
public:
virtual B* print(A* a) {//如果返回值不是指针类型那么它一定要与基类放回类型相同。
cout << 'B' << endl;
return (B*)a;//如果这里要返回类型为B* 那么就要强转(B*)a 但是其实放回的是指向B类型的A指针可以继续做多态引用;
}
};
int main() {
A *a = new B(1000);
a->print(a)->print(a);//B B
A a1 = B(1000);
a1.print(a);//A
}