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

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

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語言一個簡單問題

c語言有兩個標準,c89 89年出的,c99 99年出的c89規定,在任何執行語句之前,在塊的開頭宣告所有區域性變數。在c99以及c 中則沒有這個限制,即在首次使用之前,可在塊的任何位置都可以宣告變數。編譯結果和c語言的編譯器實現有關,你用的可能是較老的c編譯器,只支援c89規定。簡單的講就是老的編...

c語言簡單問題

估計樓主的int是16位的,10的階乘越界了,因此是一個負數,或者你試試把int改unsigned int,表示的數大一倍 如果輸入負數應該列印 data enter error,然後返回個0就好了。負數好像沒階乘的吧 else printf data enter error 寫成else 否則最後...

c語言簡單問題

void main printf 這行字元所包含的字母有 zm d n zm printf 這行字元所包含的空格有 kg d n kg printf 這行字元所包含的數字有 sz d n sz printf 這行字元所的其他字元有 qt d n qt system pause main printf...