日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
各種C++繼承方式范例分析

C++支持多種程序設(shè)計(jì)風(fēng)格,其中就包括對(duì)面向?qū)ο笤O(shè)計(jì)的支持。我們今天在這里將會(huì)為大家詳細(xì)介紹一下各種C++繼承方式的具體應(yīng)用方法,希望能夠幫助大家對(duì)這方面的知識(shí)有一個(gè)深入的認(rèn)識(shí)。#t#

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供三都網(wǎng)站建設(shè)、三都做網(wǎng)站、三都網(wǎng)站設(shè)計(jì)、三都網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、三都企業(yè)網(wǎng)站模板建站服務(wù),10多年三都做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

C++繼承方式總共分為以下幾種:

public、private、protected三種(它們直接影響到派生類的成員、及其對(duì)象對(duì)基類成員訪問(wèn)的規(guī)則)。

(1)public(公有繼承):繼承時(shí)保持基類中各成員屬性不變,并且基類中private成員被隱藏。派生類的成員只能訪問(wèn)基類中的public/protected成員,而不能訪問(wèn)private成員;派生類的對(duì)象只能訪問(wèn)基類中的public成員。

(2)private(私有繼承):繼承時(shí)基類中各成員屬性均變?yōu)閜rivate,并且基類中private成員被隱藏。派生類的成員也只能訪問(wèn)基類中的public/protected成員,而不能訪問(wèn)private成員;派生類的對(duì)象不能訪問(wèn)基類中的任何的成員。

(3)protected(保護(hù)性繼承):繼承時(shí)基類中各成員屬性均變?yōu)閜rotected,并且基類中private成員被隱藏。派生類的成員只能訪問(wèn)基類中的public/protected成員,而不能訪問(wèn)private成員;派生類的對(duì)象不能訪問(wèn)基類中的任何的成員。

C++繼承方式應(yīng)用方式代碼示例:

 
 
 
  1. #include < iostream> 
  2. using namespace std;
  3. class Base 
  4. public://公有的 
  5. int a1; 
  6. virtual void test() = 0; 
  7. protected://受保護(hù)的 
  8. int a2; 
  9. private://私有的 
  10. int a3; 
  11. };  
  12. class ProtectedClass:protected Base//保護(hù)繼承 
  13. public: 
  14. void test() 
  15. a1 = 1;//a1在這里被轉(zhuǎn)變?yōu)閜rotected 
  16. a2 = 2;//a2在這里被轉(zhuǎn)變?yōu)閜rotected 
  17. //a3=3;//錯(cuò)誤,派生類不能訪問(wèn)基類的私有成員 
  18. }; 
  19. class ControlProtectedClass:public ProtectedClass
    //以public方式繼承ProtectedClass類 
  20. public: 
  21. void test() 
  22. a1 = 1;//a1在這里仍然保持為a1在這里被轉(zhuǎn)變?yōu)閜rotected 
  23. a2 = 2;//a2在這里仍然保持為a1在這里被轉(zhuǎn)變?yōu)閜rotected 
  24. //a3=3;//錯(cuò)誤,由于Base類成員為私有的,即使是上級(jí)父類是保護(hù)繼承,
    也不能改變Base類成員的控制類型 
  25. }; 
  26. class PrivateClass:private Base//私有繼承 
  27. public: 
  28. void test() 
  29. a1 = 1;//a1在這里被轉(zhuǎn)變?yōu)閜rivate 
  30. a2 = 2;//a2在這里被轉(zhuǎn)變?yōu)閜rivate 
  31. //a3=3;//錯(cuò)誤,基類私有成員對(duì)文件區(qū)域與派生類區(qū)域都是不可訪問(wèn)的 
  32. }; 
  33. class ControlPrivateClass:public PrivateClass
    //以public方式繼承PrivateClass類 
  34. public: 
  35. void test() 
  36. //a1=1;//錯(cuò)誤,由于基類PrivateClass為私有繼承,a1已經(jīng)轉(zhuǎn)變?yōu)閜rivate 
  37. //a2=2;//錯(cuò)誤,由于基類PrivateClass為私有繼承,a1已經(jīng)轉(zhuǎn)變?yōu)閜rivate 
  38. //a3=3;//錯(cuò)誤,由于Base類成員為私有的,PrivateClass類也為私有繼承 
  39. }; 
  40. class PublicClass:public Base
    //共有繼承有區(qū)別與其它方式的繼承,繼承后的各成員不會(huì)其改變控制方式 
  41. public: 
  42. void test() 
  43. a1 = 1;//a1仍然保持public 
  44. a2 = 2;//a2仍然保持protected 
  45. //a3=3;//錯(cuò)誤,派生類不能操作基類的私有成員 
  46. }; 
  47. class ControlPublicClass:public PublicClass//以public方式繼承PublicClass類 
  48. public: 
  49. void test() 
  50. a1 = 1;//a1仍然保持public 
  51. a2 = 2;//a2仍然保持protected 
  52. //a3=3;//錯(cuò)誤,由于Base類成員為私有成員,即使是上級(jí)父類是公有繼承,
    也不能改變Base類成員的控制類型 
  53. }; 
  54. int main() 
  55. system("pause"); 
  56. }

認(rèn)真看完了C++繼承方式的應(yīng)用例子,相信細(xì)心的讀者對(duì)于共有繼承、保護(hù)繼承與私有繼承的區(qū)別與特點(diǎn)已經(jīng)了解,***再提醒一下讀者,在繼承關(guān)系中,基類的private成員不但對(duì)應(yīng)用程序隱藏,即使是派生類也是隱藏不可訪問(wèn)的,而基類的保護(hù)成員只對(duì)應(yīng)用程序隱藏,對(duì)于派生類來(lái)說(shuō)是不隱藏的,保護(hù)繼承與私有繼承在實(shí)際編程工作中使用是極其少見(jiàn)的,他們只在技術(shù)理論上有意義。


網(wǎng)站欄目:各種C++繼承方式范例分析
瀏覽地址:http://www.dlmjj.cn/article/dhgscso.html