虛函數(shù)返回值要不要一樣?
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* 那么就要強(qiáng)轉(zhuǎn)(B*)a 但是其實放回的是指向B類型的A指針可以繼續(xù)做多態(tài)引用;
}
};
int main() {
A *a = new B(1000);
a->print(a)->print(a);//B B
A a1 = B(1000);
a1.print(a);//A