亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

C語言模式實現C++繼承和多態的實例代碼

2020-01-26 13:59:41
字體:
來源:轉載
供稿:網友

這個問題主要考察的是C和C++的區別,以及C++中繼承和多態的概念。

C和C++的區別

C語言是面向過程的語言,而C++是面向對象的過程。

什么是面向對象和面向過程?

面向過程就是分析解決問題的步驟,然后用函數把這些步驟一步一步的進行實現,在使用的時候進行一一調用就行了,注重的是對于過程的分析。面向對象則是把構成問題的事進行分成各個對象,建立對象的目的也不僅僅是完成這一個個步驟,而是描述各個問題在解決的過程中所發生的行為。

面向對象和面向過程的區別?

  • 面向過程的設計方法采用函數來描述數據的操作,但將函數與操作的數據進行分離開來。
  • 面向對象的設計方法是將對象和數據進行封裝起來成為一個整體。
  • 面向過程以設計步驟為過程,后期難以維護。
  • 面向對象設計以數據為中心,數據相對與功能來說具有較強的穩定性更加易于維護。

面向對象的三大特征

封裝:

對于封裝來說就是數據與具體操作實現的代碼都放在某個對象的內部,使這些代碼的具體細節不被外界發現,只留下一些接口供外部來使用,而不能一任何的形式來對象內部的實現。使用封裝能夠隱藏具體的實現的細節,使代碼更加易于維護并且保證了系統的安全性。

繼承:

繼承機制是面向對象程序設計使代碼進行復用的最重要的手段,他允許程序員在保證類原有類特性的基礎上進行擴展來增加功能。這樣新產生的類就被稱為派生類,繼承就可以表現面向對象機制的的層次結構。

多態:

多態簡單點說就是“一個接口,多種實現”,就是同一種事物表現出的多種形態。多態在面向對象語言中是指:接口多種的不同實現方式。也就是復用相同接口,實現不同操作。

C++多態支持兩種多態性,編譯時多態和運行時多態。編譯時多態是通過重載函數來實現的,運行時多態是通過虛函數來實現的。靜態多態:編譯器在編譯期間完成,編譯器根據函數實參的類型(可能會隱式類型轉換),可推斷出要調用哪個函數,如果有對應的函數就調用相應的函數,否則就報一個編譯錯誤。動態多態:在函數執行期間(非編譯期)判斷所引用對象的實際類型,根據實際類型的調用相應的方法。使用virtual關鍵字修飾類的成員函數,指明該函數為虛函數,派生類需要重新實現,編譯器將實現動態綁定。

動態多態實現的條件:

1>、使用場景:父類的指針或者引用指向父類或者子類的對象(由賦值兼容規則決定);

2>、實現多態的兩個條件:虛函數的重寫;父類的指針或者引用調用重寫的虛函數。

3>、若父類中的成員函數加上virtual關鍵字,則子類中重寫的該函數默認virtual,可以不指定,但是一般加上;

重寫:子類重寫父類的虛函數,要求函數名稱,函數參數,返回值完全一樣(協變除外);

總的來說:封裝可以隱藏實現細節包括包含私有成員,使得代碼模塊增加安全指數;繼承可以擴展已存在的模塊,為了增加代碼的復用性;多態則是為了保證類在繼承和派生的時候,類的實例被正確調用,實現了接口的重用

C模擬實現多態

C++中的多態

我們知道的是在C++中會維護一張虛函數表,根據賦值兼容規則,我們知道父類的指針或者引用是可以指向子類對象的。如果一個父類的指針或者引用調用父類的虛函數則該父類的指針會在自己的虛函數表中查找自己的函數地址,如果該父類對象的指針或者引用指向的是子類的對象,而且該子類已經重寫了父類的虛函數,則該指針會調用子類的已經重寫的虛函數。

//c++中的多態class A{public:  virtual void fun()//虛函數實現  {    cout << "Base A::fun() " << endl;  }};class B:public A{public:  virtual void fun()//虛函數實現,子類中virtual關鍵字可以沒有  {    cout << "Derived B::fun() " << endl;  }};void Test1(){  A a;//基類對象  B b;//派生類對象  A* pa = &a;//父類指針指向父類對象  pa->fun();//調用父類的函數  pa = &b; //父類指針指向子類對象,多態實現  pa->fun();//調用派生類同名函數}

c語言實現多態

我們知道在C語言中是沒有class類這個概念的,但是有struct結構體,我們可以考慮使用struct來模擬;但是在C語言的結構體內部是沒有成員函數的,如果實現這個父結構體和子結構體共有的函數呢?我們可以考慮使用函數指針來模擬。但是這樣處理存在一個缺陷就是:父子各自的函數指針之間指向的不是類似C++中維護的虛函數表而是一塊物理內存,如果模擬的函數過多的話就會不容易維護了。

//C實現動態,用到函數指針typedef void(*FUN)();//重定義一個函數指針類型//父類struct Base {  FUN _f;};//子類struct Derived{  Base _b;//在子類中定義一個基類的對象即可實現對父類的繼承};void FunB(){  printf("%s/n", "Base::fun()");}void FunD(){  printf("%s/n", "Derived::fun()");}void Test2(){  Base b;//父類對象  Derived d;//子類對象  b._f = FunB;//父類對象調用父類同名函數  d._b._f = FunD;//子類調用子類的同名函數  Base *pb = &b;//父類指針指向父類對象  pb->_f();  pb = (Base *)&d;//讓父類指針指向子類的對象,由于類型不匹配所以要進行強轉  pb->_f();}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国a精品视频大全| 欧美日韩国产成人在线| 亚洲成色777777女色窝| 一区二区在线视频播放| www.亚洲免费视频| 国产精品亚洲第一区| 日韩中文字幕在线视频播放| 亚洲第五色综合网| 精品国产一区av| 亚洲国产精品久久久久久| 国产精品wwwwww| 国模gogo一区二区大胆私拍| 国产91免费看片| 色综合久久久久久中文网| 欧美日韩在线另类| 亚洲成人教育av| 久久久av电影| 成人激情视频免费在线| 欧美日韩国产中字| 亚洲精品久久久久久久久久久久久| 欧美理论电影在线观看| 欧美精品电影免费在线观看| 国产91色在线|| 欧美日韩亚洲一区二区三区| 精品久久久久久中文字幕| 亚洲午夜未删减在线观看| 久久久久久这里只有精品| 国产精品久久av| 91精品国产网站| 6080yy精品一区二区三区| 亚洲精品久久久久久久久| 欧美性猛交xxxxx免费看| 国产在线视频一区| 久久久精品在线观看| 欧美老妇交乱视频| 日韩欧美在线中文字幕| 国产精品久久久久久久久粉嫩av| 成人亚洲欧美一区二区三区| 一区二区成人精品| 欧美午夜激情视频| 久久人体大胆视频| 91精品啪在线观看麻豆免费| 亚洲欧美另类自拍| 国产婷婷色综合av蜜臀av| 日韩欧美第一页| 欧美日韩亚洲激情| 日韩欧美中文第一页| 国产啪精品视频网站| 亚洲国产另类 国产精品国产免费| 丝袜情趣国产精品| 亚洲人成伊人成综合网久久久| 日韩美女视频免费看| 亚洲人午夜精品| 欧美日韩黄色大片| 欧美三级xxx| 精品国产一区二区三区久久久| 亚洲激情国产精品| 久久国产精品影视| 亚洲第一福利在线观看| 日韩最新在线视频| 97视频色精品| 国产不卡精品视男人的天堂| 成人啪啪免费看| 亚洲精品视频免费在线观看| 亚洲人成人99网站| 欧美日韩加勒比精品一区| 欧美在线影院在线视频| 久久久久一本一区二区青青蜜月| 美女性感视频久久久| 国内精品一区二区三区四区| 精品日本高清在线播放| 国产欧美在线视频| 中文字幕日韩在线观看| 日韩精品在线私人| 韩剧1988免费观看全集| 久久精品在线播放| 亚洲激情第一页| 欧美色欧美亚洲高清在线视频| 国产一区二区三区视频在线观看| 色综合色综合网色综合| 国产91精品不卡视频| 日韩av在线直播| 欧美视频二区36p| 亚洲已满18点击进入在线看片| 亚洲美女av电影| 欧美尤物巨大精品爽| 午夜精品免费视频| 亚洲精品电影久久久| 国产亚洲aⅴaaaaaa毛片| 97成人精品区在线播放| 国产区精品在线观看| 日韩欧美高清在线视频| 成人网在线观看| 亚洲一区二区日本| 欧美性猛交xxxx乱大交蜜桃| 欧美精品久久久久久久| 日韩中文字幕在线观看| 在线色欧美三级视频| 欧美国产日本高清在线| 成人免费视频97| 久久夜色精品国产| 久久影视三级福利片| 另类色图亚洲色图| 亚洲国产精品嫩草影院久久| 国产97在线视频| 最近免费中文字幕视频2019| 国产一区二区三区在线| 日韩欧美高清在线视频| 欧美一区二区三区免费视| 亚洲日本中文字幕免费在线不卡| 欧美日韩激情视频8区| 中文字幕日韩有码| 久久久精品电影| 日韩高清电影免费观看完整版| 中文字幕亚洲二区| 亚洲自拍小视频免费观看| 国产精品永久免费在线| 夜夜嗨av色综合久久久综合网| 中文字幕九色91在线| 欧美精品18videosex性欧美| 欧美插天视频在线播放| 国产亚洲精品久久久优势| 97色在线观看免费视频| 在线观看欧美成人| 亚洲欧美国产高清va在线播| 日韩精品一区二区视频| 91久久精品国产91性色| 日本精品久久久久久久| 国产一区二区三区18| 日本精品中文字幕| 91美女高潮出水| 日韩福利在线播放| 久久久久久中文字幕| 欧美日韩国产激情| 九九久久久久久久久激情| 欧美在线视频导航| 久久久久九九九九| 77777少妇光屁股久久一区| 国产精品一区二区性色av| 国产69精品久久久| 中文字幕欧美专区| 久久久午夜视频| 日韩欧美中文字幕在线播放| 一本色道久久88综合亚洲精品ⅰ| 国产精品高精视频免费| 日韩精品视频在线| 亚洲国产日韩精品在线| 亚洲欧美成人一区二区在线电影| 成人福利在线观看| 国产精品日韩电影| 欧美最猛性xxxxx(亚洲精品)| 91九色国产社区在线观看| 精品偷拍一区二区三区在线看| 久久久久久久爱| 亚洲日韩中文字幕在线播放| 91视频九色网站| 中文字幕精品www乱入免费视频| 久久久久久国产三级电影| 中文字幕欧美日韩精品| 日韩久久免费电影| 欧美性视频网站| 精品久久久久久电影| 欧美成在线观看| 欧美一区二区大胆人体摄影专业网站|