C 深度剖析教程23 繼承中的訪問級別

2021-08-15 09:18:15 字數 1621 閱讀 2235

本c++課程學習記錄,完全**於狄泰軟體學院的相關課程,想一起學習的加我q1126137994或者q群199546072

給你推薦更多相關課程。

今天學習c++中繼承的訪問級別。首先我們思考乙個問題,子類是否可以直接訪問父類的私有成員???

我們可以看看下圖的思考過程:

可以看出,兩者互相矛盾,那麼實際上是什麼樣呢?我們只有讓編譯器告訴我們了:

看下面的程式:

#include 

#include

using namespace std;

class parent

intvalue()

};class child : public parent

};int main()

所以在c++中,類中還定義了一種訪問級別protected,被protected修飾的成員可以被子類訪問,而不能被其他類訪問。

下面我們看乙個例子來理解protected的訪問級別:

#include 

#include

using namespace std;

class parent

intvalue()

};class child : public parent

};int main()

執行結果為:

p.mv = 100

c.mv = 100

c.mv = 150

由執行結果,以及**的分析,知protected修飾的成員可以被子類訪問。

由此我們可以得出乙個對於定義類時的乙個訪問級別的的選擇的流程框圖:

最後我們做乙個綜合性的聯絡,結合類的組合與類的繼承,完成下圖的程式

上圖是實現實體,直線,點,這三個類的組合關係,與繼承關係,**如下:

#include 

#include

#include

using

namespace

std;

class object

string name()

string info()

};class point : public object

int x()

int y()

};class line : public object

point begin()

point end()

};int main()

執行結果為:

object

point

p(1, 2)

line

line from p(1, 2) to p(5, 6)

由以上的程式分析總結:

C 深度剖析教程22 繼承的概念和意義

今天我們來學習c 中的繼承的概念和意義。問題 類之間是否存在直接的關聯關係?回答 類之間存在組合的關係,整體與部分的關係。可以看一下生活中的例子 下面我們以乙個簡單的程式來看一下類組合的關係 include include using namespace std class memory memor...

C 深度剖析教程38 類模板深度剖析

類模板可以定義任意多個不同的型別引數 類模板可以被特化 類模板的特化型別 看 include include using namespace std template typename t1,typename t2 class test template typename t1,typename t...

C 深度剖析教程26 父子間的衝突

今天繼續來學習c 父類與子類之間的衝突。加qq1126137994共同學習交流。子類中是否可以定義父類中的同名成員,如果可以,如何區分?如果不可以那又為什麼?下面還是以乙個簡單的例子,來說明上述幾點的正確性 include include using namespace std class pare...