国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++類的多態及其不可逆

2019-11-08 00:44:48
字體:
來源:轉載
供稿:網友
class A{public:virtual ~A(){}virtual void fun(){PRintf("func a/n");}private:char a;int b;char c;};class B:public A{public:~B(){}void fun(){printf("func b/n");}

};

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

解釋下第二個輸出: 類的多態性, 注意函數的返回值以及參數都需要和父類才能實現多態性, 即同一函數實現各自類的實現

如果子類只改變返回值會報錯, 要改變返回值, 參數也必須改變才不會報錯


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 龙里县| 鲁甸县| 阿克苏市| 滁州市| 乐山市| 青岛市| 安多县| 庆元县| 拜城县| 武平县| 安顺市| 吉水县| 大英县| 宜宾市| 长治市| 昌宁县| 含山县| 岳阳市| 明光市| 留坝县| 扶沟县| 麟游县| 增城市| 镇宁| 益阳市| 汾西县| 宜昌市| 裕民县| 泉州市| 灵川县| 宜良县| 平利县| 天全县| 苍溪县| 定西市| 阿坝县| 沙湾县| 新河县| 平和县| 吉安县| 昭平县|