日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
詳細(xì)介紹C++類繼承關(guān)系問(wèn)題

對(duì)***次接觸到C++類繼承的用戶和學(xué)者來(lái)說(shuō),但是首先要對(duì)C++類繼承的性質(zhì)進(jìn)行充分了解,那么就先說(shuō)一下什么是C++類,所謂C++類:類是定義同一類所有對(duì)象的變量和方法的藍(lán)圖或原型。

10年積累的做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有合川免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

1. public
從語(yǔ)義角度上來(lái)說(shuō),public繼承是一種接口C++類繼承,根據(jù)面向?qū)ο笾械年P(guān)系而言就是,子類可以代替父類完成父類接口所聲明的行為,也就是必須符合“Liskov替換(LSP)”,此時(shí)子類可以自動(dòng)轉(zhuǎn)換成為父類的接口,完成接口轉(zhuǎn)換。從語(yǔ)法角度上來(lái)說(shuō),public繼承會(huì)保留父類中成員(包括函數(shù)和變量等)的可見(jiàn)性不變,也就是說(shuō),如果父類中的某個(gè)函數(shù)是public的,那么在被子類繼承后仍然是public的。

2. protected
從語(yǔ)義角度上來(lái)說(shuō),protected繼承是一種實(shí)現(xiàn)繼承,根據(jù)面向?qū)ο笾械年P(guān)系而言就是,子類不能代替父類完成父類接口所聲明的行為,也就是不符合“Liskov替換原則(LSP)”,此時(shí)子類不能自動(dòng)轉(zhuǎn)換成為父類的接口。

就算通過(guò)類型轉(zhuǎn)換(static_cast和dynamic_cast)也會(huì)得到一個(gè)空指針。從語(yǔ)法角度上來(lái)說(shuō),protected繼承會(huì)將父類中的public可見(jiàn)性的成員修改成為protected可見(jiàn)性,相當(dāng)于在子類中引入了protected成員,這樣一來(lái)在子類中同樣還是可以調(diào)用父類的protected和public成員,子類的子類就也可以調(diào)用被protected繼承的父類的protected和public成員。

3. private
從語(yǔ)義角度上來(lái)說(shuō),private繼承是一種實(shí)現(xiàn)C++類繼承,根據(jù)面向?qū)ο笾械年P(guān)系而言就是,子類不能代替父類完成父類接口所聲明的行為,也就是不符合“Liskov替換原則(LSP)”,此時(shí)子類不能自動(dòng)轉(zhuǎn)換成為父類的接口。

就算通過(guò)類型轉(zhuǎn)換(static_cast和dynamic_cast)也會(huì)得到一個(gè)空指針。從語(yǔ)法角度上來(lái)說(shuō),private繼承會(huì)將父類中的public和protected可見(jiàn)性的成員修改成為private可見(jiàn)性,這樣一來(lái)雖然子類中同樣還是可以調(diào)用父類的protected和public成員,但是在子類的子類就不可以再調(diào)用被private繼承的父類的成員了。

 
 
 
  1. class CSample1 {  
  2.      protected:  
  3.          void printProtected() {}  
  4.      public:  
  5.          void printPublic() {}  
  6.      };  
  7.      class CSample2 : protected CSample1 {  
  8.        
  9.      };  
  10.      class CSample3 : public CSample2 {  
  11.          void print3() {  
  12.              printProtected();  
  13.              printPublic();  
  14.          }  
  15.      }; 

在面向?qū)ο蟮睦碚撝杏袃煞N概念:接口、實(shí)現(xiàn),所以就出現(xiàn)了所謂的接口繼承和實(shí)現(xiàn)繼承兩種關(guān)系。而protected和private就是實(shí)現(xiàn)繼承中所要用到的,其實(shí)protected和private兩者則約束繼承時(shí)并沒(méi)有形成兩種不同的繼承類別,而僅僅只是為了方便C++類方法的傳遞調(diào)用而設(shè)計(jì)的。

其實(shí)在java這樣面向?qū)ο笠蟾鼮閲?yán)格的語(yǔ)言當(dāng)中,沒(méi)有實(shí)現(xiàn)繼承,他必須通過(guò)委托方式來(lái)完成這一概念,如果熟悉java就會(huì)明白,如果一個(gè)對(duì)象要使用另外一個(gè)對(duì)象的接口功能,而自身又不能夠充當(dāng)該對(duì)象所扮演的角色時(shí),就會(huì)通過(guò)委托來(lái)完成。

這樣一來(lái)就必須在對(duì)象中包含一個(gè)委托對(duì)象,通過(guò)對(duì)象調(diào)用語(yǔ)法來(lái)完成功能;在C++中就可以通過(guò)protected和private繼承來(lái)完成java中的委托關(guān)系(當(dāng)然C++也可以形成對(duì)象委托關(guān)系),那么這種情況下protected繼承就容許委托可以傳遞(也就是被多級(jí)子類調(diào)用),而private繼承是不容許委托被傳遞的。

【編輯推薦】

  1. 簡(jiǎn)介學(xué)習(xí)C++總結(jié)之談
  2. 對(duì)C++庫(kù)函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
  3. C++類庫(kù)設(shè)計(jì)的基本構(gòu)思與方法
  4. C++語(yǔ)言真的還有市場(chǎng)價(jià)值?
  5. C++類庫(kù)設(shè)計(jì)的基本構(gòu)思與方法

網(wǎng)頁(yè)標(biāo)題:詳細(xì)介紹C++類繼承關(guān)系問(wèn)題
文章出自:http://www.5511xx.com/article/ccdohdp.html