簡單C 語言問題,求教,關於私有繼承

2021-08-04 21:38:49 字數 2379 閱讀 3452

1樓:物理公司的

私有基類的公用成員和保護成員在私有派生類中

的訪問屬性相當於派生類中的私有成員,即派生類的成員函式能訪問它們,而在派生類外不能訪問它們。私有基類的私有成員在派生類中稱為不可訪問的成員,只有

基類的成員函式可以引用它們,一個基類成員在基類中的訪問屬性和在私有派生類中的訪問屬性可能是不相同的。私有基類的成員在私有派生類中的訪問屬性見下

表:私有基類中的成員 在私有派生類中的訪問屬性

私有成員 不可訪問

公用成員 私有

保護成員 私有

2樓:匿名使用者

私有繼承用得比較少,因為其他的面嚮物件語言不一定支援私有繼承,所以都儘量避免使用私有繼承,它的用途主要是用來定義實現或者控制基類的介面。

比如說你想通過某個類的物件來實現功能,但是不想讓外部知道這個類的存在,那就可以用私有繼承。(正常情況下一般是將這個類定義成成員物件,但是使用私有繼承在語法上稍微會有一點放便)

c++ 在什麼情況下需使用私有繼承

3樓:

在做一些類做介面方面的轉換就可以用私有繼承,子類物件只能通過子類的公有函式去訪問父類,這樣就有效的遮蔽父類的介面。

4樓:志遠

不希望客戶程式使用任何其父類的方法,很少這麼用,一般是重構的時候,為了防止客戶程式及其派生類在接觸到老舊程式的父類方法,會從老舊類私有派生新的類,並將新的類作為**介面釋出。

5樓:智精星

以後基本上使用子類了吧

c++中一個關於私有繼承的問題

6樓:匿名使用者

//在私有派生中,基類的所有成員在派生類中均為私有的。所以,在//派生類外不可以直接使用基類繼承過來的成員,而在派生類的//內部,對於基類繼承過來的成員,也只可直接使用其保護和公有//屬性的成員。

//以下改進僅供參考

#include "iostream.h"

class ca

int readvalue()

};class cb:private ca

int readtotal()

int readvalue1()

}; class cc:private cbint readcount()

int readtotal1()

int readvalue2()

}; int main( )

7樓:匿名使用者

呵呵,看了樓上的,~~~

不過我可以給你一個提示,私有繼承時,物件不能訪問基類的任何成員,但是,可以用間接利用成員函式來訪問基類成員

8樓:

很簡單啊,建立n多介面,及是:get()返回一個私有成員,

c++語言:在私有繼承中,基類的公有成員和保護成員成為派生類的私有成員,無法繼續繼承。

9樓:匿名使用者

例如:class a

;class b :private a

//可以訪問a

};class c : public b

;//錯誤,無法通過編譯,a私有,不可見};

c++中,比較類的三種繼承方式:共有繼承、受保護繼承、私有繼承之間的區別。

10樓:匿名使用者

在三種不同方式的繼承下,派生類對原來基類中的成員訪問的方式也不一樣,具版體如下:

1>公有繼承中:權

(1)基類的共有成員就相當於是派生類的公有成員,也就是說派生類可以像訪問自身公有成員一樣訪問從基類繼承的公有成員。

(2)基類的保護成員就相當於是派生類的保護成員,即,派生類可以像訪問自身的保護成員一樣,訪問基類的保護成員。

(3)對於基類的私有成員,派生類內部成員是無法直接訪問的,派生類使用者也無法通過派生類物件直接訪問。

2>受保護繼承中:

(1)基類的公有成員和保護成員都相當於派生類的保護成員,派生類可以通過自身的成員函式或其子類的成員函式訪問它們。

(2)對於基類的私有成員,無論派生類內部成員或派生類的物件都無法直接訪問。

3>私有繼承中:

(1)基類公有成員和受保護成員都相當於派生類的私有成員,派生類只能通過自身的成員函式訪問他們。

(2)對於基類的私有成員,無論派生類內部成員或派生類的物件都無法直接訪問。

我只給你寫了理論的區別比較,例子舉起來太麻煩,如果你覺得有必要通過例子來說明的話,我可以寫給你,你也可以拿一些不懂得問題問我。

關於C語言的簡單問題,乙個關於C語言的簡單問題

p fopen e string.txt w 是以只寫方式開啟e盤下的string.txt檔案,如果檔案不存在則建立乙個新檔案,如果存在,則檔案內的資料會丟失 也就是會被你將要寫入的資料覆蓋 開啟檔案成功則返回的是檔案指標,如果不成功返回0 if null p fopen e string.txt ...

關於C語言的簡單問題,乙個關於C語言的簡單問題

int fun char p,char q for i 0 p 0 i p應小寫,fun函式的比較方法也不對,你這樣只能比較開始字母一樣的 int fun char p char q 兩個引數中間少了乙個逗號 for i 0 p 0 i 這個大寫p應該為小寫p 你的fun函式不是那麼回事啊。我幫你重...

c語言 選擇 求教 關於指標,C語言 選擇 求教 關於指標

樓上說的不對,變數宣告了當然是可以取位址的,是可以用 的,1 是錯的是因為int a,p,q,p q a p q a前面是個逗號,也就是說,先宣告int p,後面又宣告 int p,也就是將變數p宣告了兩次不同型別,所以是不對的,4 是對的,所以選d 好吧,我說的樓上樓上。全部都是錯的,這一點是完全...