};
int main(int argc, char* argv[]){B b;A d;A *a = &b;B *c = &b;a->fun();c->fun();a = &d;c = &d;a->fun();c->fun();return 0;}
結果分析:
c = &d; cannot convert from 'class A *' to 'class B *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
不能將父類賦給子類 原因如下, 子類可以在父類的基礎上擴展內存 , 也就是多樣化, 如果用父類生成的已有空間給子類使用, 那么可能存在內存溢出, 父類也不知道子類具體有哪些東西, 具體解釋可以google
將錯誤去掉打印結果:
func b
func b
func a
解釋下第二個輸出: 類的多態性, 注意函數的返回值以及參數都需要和父類才能實現多態性, 即同一函數實現各自類的實現
如果子類只改變返回值會報錯, 要改變返回值, 參數也必須改變才不會報錯
新聞熱點
疑難解答
圖片精選