日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈谈重载(overload)覆盖(override)与隐藏

發布時間:2025/3/8 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈重载(overload)覆盖(override)与隐藏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這三個概念都是與OO中的多態有關系的。如果單是區別重載與覆蓋這兩個概念是比較容易的,但是隱藏這一概念卻使問題變得有點復雜了,下面說說它們的區別吧。

???????重載是指不同的函數使用相同的函數名,但是函數的參數個數或類型不同。調用的時候根據函數的參數來區別不同的函數。

???????覆蓋(也叫重寫)是指在派生類中重新對基類中的虛函數(注意是虛函數)重新實現。即函數名和參數都一樣,只是函數的實現體不一樣。

???????隱藏是指派生類中的函數把基類中相同名字的函數屏蔽掉了。隱藏與另外兩個概念表面上看來很像,很難區分,其實他們的關鍵區別就是在多態的實現上。什么叫多態?簡單地說就是一個接口,多種實現吧。

???????還是引用一下別人的代碼來說明問題吧(引用自林銳的《高質量C/C++編程指南》)。

仔細看下面的代碼:


#include <iostream.h>


????class Base


{


public:


????virtual?void f(float x){ cout << "Base::f(float) " << x << endl; }


void g(float x){ cout << "Base::g(float) " << x << endl; }


????????????void h(float x){ cout << "Base::h(float) " << x << endl; }


};


????class Derived : public Base


{


public:


????virtual?void f(float x){ cout << "Derived::f(float) " << x << endl; }


void g(int x){ cout << "Derived::g(int) " << x << endl; }


????????????void h(float x){ cout << "Derived::h(float) " << x << endl; }


};


看出什么了嗎?下面說明一下:

(1)函數Derived::f(float)覆蓋了Base::f(float)。


(2)函數Derived::g(int)隱藏了Base::g(float),而不是重載。


(3)函數Derived::h(float)隱藏了Base::h(float),而不是覆蓋。


???????嗯,概念大概明白了,但是在實際的編程中,我們會因此遇到什么問題呢?再看下面的代碼:

void main(void)


{


Derived??d;


Base *pb = &d;


Derived *pd = &d;


// Good : behavior depends solely on type of the object


pb->f(3.14f);?// Derived::f(float) 3.14


pd->f(3.14f);?// Derived::f(float) 3.14



?

// Bad : behavior depends on type of the pointer


pb->g(3.14f);?// Base::g(float) 3.14


pd->g(3.14f);?// Derived::g(int) 3????????(surprise!)



?

// Bad : behavior depends on type of the pointer


pb->h(3.14f);?// Base::h(float) 3.14??????(surprise!)


pd->h(3.14f);?// Derived::h(float) 3.14


}


在第一種調用中,函數的行為取決于指針所指向的對象。在第二第三種調用中,函數的行為取決于指針的類型。所以說,隱藏破壞了面向對象編程中多態這一特性,會使得OOP人員產生混亂。


不過隱藏也并不是一無是處,它可以幫助編程人員在編譯時期找出一些錯誤的調用。但我覺得還是應該盡量不要使用隱藏這一些特性,該加virtual時就加吧。

轉載自:

http://blog.csdn.net/yanjun_1982/article/details/470405

轉載于:https://blog.51cto.com/7044041/1888232

總結

以上是生活随笔為你收集整理的谈谈重载(overload)覆盖(override)与隐藏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线网址 | 日本久久一级片 | 无码视频一区二区三区 | 国产操视频 | 黄色aa级片 | 久久精品97 | 在线免费观看www | 小视频在线 | 国产丝袜久久 | 人妻91麻豆一区二区三区 | 一区二区麻豆 | 日韩最新 | 自拍偷拍专区 | 丰满人妻一区二区三区53 | av一级二级 | 日日爽爽 | 欧洲综合色| 91麻豆精品国产91 | 日韩av免费在线播放 | 亚洲国产精品一区二区尤物区 | 一卡二卡三卡 | 粉嫩av一区二区 | cao在线视频 | 无码aⅴ精品一区二区三区 精品久久在线 | 又大又粗又爽18禁免费看 | 免费观看黄色网页 | 最近国语视频在线观看免费播放 | 亚洲日本综合 | 在线观看中文字幕av | 国产精品日韩欧美一区二区三区 | 毛片成人| 色婷婷色综合 | 亚洲乱码国产乱码精品天美传媒 | 日韩精品麻豆 | 成人在线观看网站 | 欧美精品入口蜜桃 | 欧美日韩国产色 | 亚洲成人午夜影院 | 亚洲第一激情 | 制服av网| 欧美黄色大全 | 中文字幕国产一区 | 中文字幕日韩高清 | 懂色av一区二区三区免费 | 亚洲黄色在线观看视频 | 人人插插 | 97久久精品视频 | 国产浪潮av | 日韩视频一区二区三区 | 成人永久视频 | 四虎成人在线 | 国产午夜成人久久无码一区二区 | 天天色天天色 | 激情av一区| 中文字幕精品久久久 | 欧美xxxx18国产 | 不卡一二区| 九一九色国产 | 免费日本黄色片 | 先锋av资源站 | 天天干,天天爽 | 国产免费福利视频 | 红桃视频国产 | jzzjzzjzz亚洲成熟少妇 | 国产精品精品 | 青草一区二区 | 情侣av | 中文字幕导航 | 国产精彩视频 | 久久综合婷婷国产二区高清 | www.黄色网 | 超碰免费公开在线 | 六月色播| 日日碰碰 | 一区二区三区视频免费 | 婷婷.com| 北条麻妃青青久久 | 亚洲一二三区在线观看 | 亚洲视频免费播放 | 午夜色网| 杨幂一区二区三区免费看视频 | 农村妇女愉情三级 | 中文字幕国产在线 | www.亚洲.com| 久久露脸国语精品国产 | 五月天视频网 | 在线不卡二区 | 免费日韩成人 | 婷婷网五月天 | 草草影院在线 | 在线精品一区 | 福利亚洲 | 国产精品羞羞答答在线观看 | 久久久久99精品国产片 | 全黄毛片 | 鲁一鲁在线视频 | 欧美精品一区二区三区在线 | 欧美激情第三页 | 91天堂在线|