国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

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


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

圖片精選

主站蜘蛛池模板: 澜沧| 巧家县| 西安市| 和田市| 云南省| 华阴市| 西贡区| 六安市| 囊谦县| 昌图县| 芦溪县| 湘潭县| 黑水县| 宁明县| 浏阳市| 苏州市| 九台市| 南皮县| 绍兴市| 和政县| 双峰县| 阿拉善右旗| 伊通| 上杭县| 曲靖市| 平泉县| 宜黄县| 天等县| 济阳县| 沙洋县| 正定县| 丰原市| 马鞍山市| 阳信县| 增城市| 新巴尔虎左旗| 凤冈县| 阳高县| 余江县| 黄石市| 广安市|