1. 程式人生 > >c++繼承方式及對基類的訪問許可權

c++繼承方式及對基類的訪問許可權

    這種繼承方式與私有繼承方式相同,兩者的區別僅在於對派生類的成員而言,基類成員對其物件的可見性與一般類及其物件的可見性相同,公有成員可見,其他成員不可見。
    基類成員對派生類的可見性對派生類來說,基類的公有成員和保護成員是可見的:基類的公有成員和保護成員都作為派生類的保護成員,並且不能被這個派生類的子類訪問;基類的私有成員是不可見的:派生類不可訪問基類中的私有成員。
    基類成員對派生類物件的可見性對派生類物件來說,基類的所有成員都是不可見的。
    所以,在保護繼承時,基類的成員也只能由直接派生類來訪問,而無法再往下繼承。
    在繼承中,基類的private對所有的外界都遮蔽(包括自己的派生類),基類的protected控制符對應用程式是遮蔽的,但對其派生類是可訪問的。保護繼承和私有繼承只是在技術上討論時有其一席之地。

相關推薦

c++繼承方式訪問許可權

    這種繼承方式與私有繼承方式相同,兩者的區別僅在於對派生類的成員而言,基類成員對其物件的可見性與一般類及其物件的可見性相同,公有成員可見,其他成員不可見。     基類成員對派生類的可見性對派生類來說,基類的公有成員和保護成員是可見的:基類的公有成員和保護成員都作為派生類的保護成員,並且不能被這個派生類

C++ 建構函式帶引數的繼承方式派生的初始化

在定義類的時候,會遇到基類的建構函式帶引數,而子類子類建構函式不帶引數,這時候如果以程式碼 a 的方式建立派生類則會出錯。 程式碼 a: class A { public: A(int x, int y):i(x),j(y){ }

c++】深入剖析虛擬繼承與各種繼承關係中派生內成員記憶體分佈情況表的內容

概要 本文講述在VS2012環境下,採用程式碼和圖結合的方法,分析C++程式碼中不同繼承方式的物件模型,以及從彙編角度分析虛擬繼承編譯器生成的虛基類表裡的內容,不涉及虛擬函式。 繼承分類: 1.單繼承 一個子類只有一個直接父類 // 單繼承 工人類 繼承 人類 cl

C++中派生成員的三種訪問規則

、公有繼承的訪問規則當類的繼承方式為公有繼承時,基類的public成員和protected成員被繼承到派生類中仍作為派生類的public成員和protected成員,派生類的其它成員可以直接訪問它們。但是,類的外部使用者只能通過派生類的物件訪問繼承來的public成員。基類的private成員在私有派生類中是

公有繼承中派生StudentPerson成員的訪問

題目內容:已知基類Person的定義如下:class Person{ char Name[20];char Sex;int Age;public:void Register(char *name, int age, char sex) ;void ShowMe();};請通過

OOP2(虛函數/抽象/訪問控制與繼承)

控制 space protected 相對 mes nbsp 獨立 friend 抽象類 通常情況下,如果我們不適用某個函數,則無需為該函數提供定義。但我們必須為每個虛函數都提供定義而不管它是否被用到了,這因為連編譯器也無法確定到底會適用哪個虛函數 對虛函數的調用可能在

模板中使用友元函式的方式,派生友元函式的成員使用情況

在一般友元函式的前面加上 template<typename T),注意在函式的宣告和定義處都要加這個模板 例如: //模板類,長方體類 template <typename ElementType> class Rectangle { ///*過載基類的輸入輸出運算子*/

C++ 多繼承中重寫 不同中相同原型的虛擬函式

本篇隨筆為轉載,原文地址: C++多繼承中重寫不同基類中相同原型的虛擬函式。 在C++多繼承體系當中,在派生類中可以重寫不同基類中的虛擬函式。下面就是一個例子: class CBaseA { public:     

C++巢狀的使用對外部類的訪問許可權

本人能力、精力有限,所言所感都基於自身的實踐和有限的閱讀、查閱,如有錯誤,歡迎拍磚,敬請賜教——部落格園:錢智慧。 先上程式碼: 1 class Outer 2 { 3 public: 4 Outer(){m_outerInt=0;} 5 private:

關於繼承,不同繼承方式,對於派生成員以及的可見性

通過繼承機制,可以利用已有的資料型別來定義新的資料型別。所定義的新的資料型別不僅擁有新定義的成員,而且還同時擁有舊的成員。我們稱已存在的用來派生新類的類為基類,又稱為父類。由已存在的類派生出的新類稱為派生類,又稱為子類。  在C++語言中,一個派生類可以從一個基類派生,也可以從多個基類派生。從一個基類派生的繼

第三十一節 C++ 繼承之如何在派生中呼叫被覆蓋的函式成員(方法)

#include <iostream> using namespace std; /*有些基類的方法在派生類被覆蓋,但有時我們需要呼叫基類的方法。 * 這裡提供了兩種方式去呼叫基類被覆蓋的

派生成員的訪問許可權和派生物件成員的訪問許可權

派生類在類內只可能訪問基類的public和protected成員 派生類物件和基類物件只能訪問自個類的public成員 基類成員在繼承後在派生類中的許可權:                

C++可繼承的單例模板

遞歸 構造函數 single reat exce efault val 參考資料 重點 目錄 一、介紹 二、代碼 三、關鍵處 四、使用限制 五、參考資料

派生成員訪問

作用域分辨符:就是::用來限定要訪問的成員所在的類的名稱;表示式是:基類名::成員名;            //資料成員基類名::成員名(引數表)//成員函式加入作用域分辨符可以防止同名覆蓋,也可以保證訪問不出現二義性;(避免二義性,記憶體中只有一份拷貝,用到虛基類)例子:

C++學習筆記----4.5 C++繼承時的象內存模型

關系 分享 nbsp blank size 關聯 一個 查看 ges 推薦閱讀:http://blog.csdn.net/randyjiawenjie/article/details/6693337 最近研究了一下,C++繼承的內存對象模型。主要是讀了讀

3.2 C++繼承方式

pan 基類 price ble tla python const contain 訪問權限 參考: http://www.weixueyuan.net/view/6359.html 總結:   子類繼承父類,繼承方式將限制父類的成員屬性在子類中的訪問權限,子類訪問父類的

C# new關鍵字和型轉換(雙括號、is操作符、as操作符)

對象 分配 key system.in let main false ring true 一、new關鍵字 CLR要求所有的對象都通過new來創建,代碼如下: Object obj=new Object(); 以下是new操作符做的事情 1、計算類型及其所有基類型(一直

json字串轉json物件的四種方式json字串的處理方式

1. 將json字串轉化為json物件 a. 方案一:jquery自帶的$.parseJSON函式 <script> var jsonstr="{\"id\":\"1\",\"name\":\"jack\"}"; var obj=$.parseJSON(jsonstr);

C++學習筆記】虛(二)

上一期由於寫累了,偷了點懶,就沒把注意點放完,這次繼續。 (3)若同一層次中同時包含虛基類和非虛基類,應該先呼叫虛基類,再呼叫非虛基類。(同一層中:同一級的繼承中) (4)對於多個虛基類,建構函式執行順序任然是先左後右,先上後下。 (5)對於非虛基類,建構函式的執行順序也是先左後右,先上後下

C++學習筆記】虛(一)

1.為什麼要引入虛基類? 在類的繼承中,如果我們遇到這種情況: “B和C同時繼承A,而B和C都被D繼承” 在此時,假如A中有一個函式fun()當然同時被B和C繼承,而D按理說繼承了B和C,同時也應該能呼叫fun()函式。這一呼叫就有問題了,到底是要呼叫B中的fun()函式還是呼叫C中的f