91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析C++類繼承關系問題

發布時間:2021-10-27 17:55:13 來源:億速云 閱讀:151 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關如何解析C++類繼承關系問題,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

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

1. public
從語義角度上來說,public繼承是一種接口C++類繼承,根據面向對象中的關系而言就是,子類可以代替父類完成父類接口所聲明的行為,也就是必須符合“Liskov替換(LSP)”,此時子類可以自動轉換成為父類的接口,完成接口轉換。從語法角度上來說,public繼承會保留父類中成員(包括函數和變量等)的可見性不變,也就是說,如果父類中的某個函數是public的,那么在被子類繼承后仍然是public的。

2. protected
從語義角度上來說,protected繼承是一種實現繼承,根據面向對象中的關系而言就是,子類不能代替父類完成父類接口所聲明的行為,也就是不符合“Liskov替換原則(LSP)”,此時子類不能自動轉換成為父類的接口。

就算通過類型轉換(static_cast和dynamic_cast)也會得到一個空指針。從語法角度上來說,protected繼承會將父類中的public可見性的成員修改成為protected可見性,相當于在子類中引入了protected成員,這樣一來在子類中同樣還是可以調用父類的protected和public成員,子類的子類就也可以調用被protected繼承的父類的protected和public成員。

3. private
從語義角度上來說,private繼承是一種實現C++類繼承,根據面向對象中的關系而言就是,子類不能代替父類完成父類接口所聲明的行為,也就是不符合“Liskov替換原則(LSP)”,此時子類不能自動轉換成為父類的接口。

就算通過類型轉換(static_cast和dynamic_cast)也會得到一個空指針。從語法角度上來說,private繼承會將父類中的public和protected可見性的成員修改成為private可見性,這樣一來雖然子類中同樣還是可以調用父類的protected和public成員,但是在子類的子類就不可以再調用被private繼承的父類的成員了。

class CSample1 {       protected:           void printProtected() {}       public:           void printPublic() {}       };       class CSample2 : protected CSample1 {              };       class CSample3 : public CSample2 {           void print3() {               printProtected();               printPublic();           }       };

在面向對象的理論中有兩種概念:接口、實現,所以就出現了所謂的接口繼承和實現繼承兩種關系。而protected和private就是實現繼承中所要用到的,其實protected和private兩者則約束繼承時并沒有形成兩種不同的繼承類別,而僅僅只是為了方便C++類方法的傳遞調用而設計的。

其實在java這樣面向對象要求更為嚴格的語言當中,沒有實現繼承,他必須通過委托方式來完成這一概念,如果熟悉java就會明白,如果一個對象要使用另外一個對象的接口功能,而自身又不能夠充當該對象所扮演的角色時,就會通過委托來完成。

這樣一來就必須在對象中包含一個委托對象,通過對象調用語法來完成功能;在C++中就可以通過protected和private繼承來完成java中的委托關系(當然C++也可以形成對象委托關系),那么這種情況下protected繼承就容許委托可以傳遞(也就是被多級子類調用),而private繼承是不容許委托被傳遞的。

看完上述內容,你們對如何解析C++類繼承關系問題有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

监利县| 泊头市| 锦州市| 苍山县| 长汀县| 晋中市| 武邑县| 邻水| 芜湖市| 鄂温| 利津县| 武清区| 横峰县| 旅游| 高州市| 江川县| 普陀区| 琼结县| 吐鲁番市| 武夷山市| 防城港市| 浦县| 南宁市| 桐柏县| 共和县| 彭山县| 资讯| 安岳县| 辰溪县| 三门峡市| 方城县| 赤城县| 论坛| 衡阳市| 手机| 卢龙县| 梧州市| 廊坊市| 崇阳县| 明星| 鸡东县|