C基類中的保護成員在其派生類中可以訪問,而派生類物件不可訪問

時間 2021-09-17 08:23:57

1樓:匿名使用者

在類外,你可以把保護成員和私有成員一樣看待。

在類內部,你可以訪問基類保護成員,不可以訪問基類私有成員。

公有成員則是暴露的,隨時處在風口浪尖之中。

2樓:

在派生類類內的成員函式中,如果有派生類例項物件的引用或者指標。可以通過該引用或指標來訪問基類的protected成員

3樓:匿名使用者

保護成員不能通過物件,在外部進行訪問;在外部用物件直接訪問的函式介面必須為public型別,但是類內的函式內部是可以相互呼叫的,protect和private起到了良好的保護,使得類更安全;類和物件的關係,lz應該注意一下,物件只是類的例項化。

4樓:匿名使用者

有這回事嗎?我也是c++初學者,不過我想派生類物件作為派生類的例項,應該具有與派生類相同的功能吧。那麼,派生類定義中能做的事,派生類物件差不多也能做吧。

不過呢,看看編譯器是怎麼做的才行。如果在派生類中用到了基類的保護成員,那麼派生類物件應該就能訪問吧。但若是沒用到,嘿嘿,編譯器就可以把無用的東西去掉了,於是,在派生類物件中就沒有訪問基類保護成員的概念,於是雖然有指向基類例項的指標,但又怎麼通過這個指標能訪問到其中的保護成員呢?

這方面的資訊編譯器是知道的,但是它不用,這就是語法呀(需要基類例項指標+位移),就訪問不了了。可是偏偏又可以讓編譯器不做出這樣的規則,那麼派生類物件就擁有了基類的所有資訊,那麼啥都可以訪問了。其實,起關鍵作用的還是c++語言的規範,編譯器也是按規範辦事。

不過呢,偏偏我也是菜鳥,不懂得規範,所以就不知道規範上對這種情況是怎樣的規定了。

c++類的公有繼承,基類的私有成員在派生類中不可見或不可訪問,這個不可見或不可訪問是什麼意思?

5樓:3月21日晴

在c++語言中,一個派生類可以從一個基類派生,也可以從多個基類派生。從一個基類派生的繼承稱為單繼承;從多個基類派生的繼承稱為多繼承。

方式如下:

公有繼承(public)、私有繼承(private)、保護繼承(protected)是常用的三種繼承方式。

1. 公有繼承(public)

公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。

2. 私有繼承(private)

私有繼承的特點是基類的公有成員和保護成員都作為派生類的私有成員,並且不能被這個派生類的子類所訪問。

3. 保護繼承(protected)

保護繼承的特點是基類的所有公有成員和保護成員都成為派生類的保護成員,並且只能被它的派生類成員函式或友元訪問,基類的私有成員仍然是私有的。

6樓:匿名使用者

公有繼承:

當類的繼承方式為公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,而基類的私有成員不可直接訪問。也就是說基類的公有成員和保護成員被繼承到派生類中訪問屬性不變,仍作為派生類的公有成員和保護成員,派生類的其他成員可以直接訪問它們。在類族之外只能通過派生類的物件訪問從基類繼承的公有成員。

私有繼承:

當類的繼承方式為私有繼承時,基類中的公有成員和保護成員都以私有成員的身份出現在派生類中,而基類的私有成員在派生類中不可直接訪問。也就是說基類的公有成員和保護成員被繼承後作為派生類的私有成員,派生類的其他成員可以直接訪問它們,但是在類族外部通過派生類的物件無法直接訪問它們。無論是派生類的 成員還是通過派生類的物件,都無法直接訪問從基類繼承的私有成員。

保護繼承:

保護繼承中,基類的公有成員和保護成員都以保護成員的身份出現在派生類中,而基類的私有成員變數不可直接訪問。這樣,派生類的其他成員就可以直接訪問從基類繼承來的公有和保護成員,但在類的外部通過派生類的物件無法直接訪問它們,無論是派生類的成員還是派生類的物件都無法直接訪問基類的私有成員。

公有繼承:保持原狀

許可權:(1)派生類成員只能訪問基類中的 public/protected 成員;

(2)派生類的物件只能訪問基類中的public成員。(注意:派生類和派生類物件是不同的)

私有繼承:均變私有

許可權:(1)派生類成員也只能訪問基類中的 public/protected 成員;

(2)派生類的物件不能訪問基類中的任何的成員。

保護繼承:公有、保護變保護

許可權:(1)派生類的成員只能訪問基類中的 public/protected 成員;

(2)派生類的物件不能訪問基類中的任何的成員。

共性:1、私有最終都是私有,且不可訪問的;

2、這就像一個許可權大小包含、約束關係,仔細體會;

3、物件只有公有繼承,可以訪問 public 成員,其餘的都是不能訪問的;

4、三種繼承,成員訪問都是一樣的,因為相當於基類成員被已相應的許可權規則被copy到子類;

5、上面說的成員可以是:

(1)成員函式

(2)成員變數

在公有繼承的情況下,基類成員在派生類中的訪問許可權保持不變? c++

7樓:匿名使用者

c++在公有繼承

的情況下,基類的public和protected成員的訪問屬性在派生類中不變,而基類版的private成員不權可訪問。其他外部使用者只能通過派生類的物件訪問繼承的public成員。另外,追加點分再採納吧,親。。

8樓:匿名使用者

嗯,公有繼承下,基類成員中公有和受保護型別的訪問許可權都不變,但基類的私有成員無論採用何種繼承方式,在子類中都將變得不可訪問。

9樓:匿名使用者

每次點高質量答題進來都只能看到提問標題,無法看到具體內容,沒辦法回答問題,也沒辦法看到有幾個答案,很多都是已經有最佳答案了還推薦出來。真的很心傷,管理可以解決一下這個問題嗎?不知道到哪反映啊。

10樓:節子不哭

不是的,基類的私有資料成員在派生類中不可見。

11樓:我是一小小魚蝶

基類訪問派生類?是不是寫反了 派生訪問基類吧,公有繼承下,public和protect公有跟保護可以訪問 private私有不能訪問

c++問題 派生類只繼承基類的公有成員和保護成員。 這句話怎麼是錯的呢? 私有成員不是不能被繼承嗎

12樓:萌猛學長

是的。c++是c語言的繼承,它既可以進行c語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。c++擅長物件導向程式設計的同時,還可以進行基於過程的程式設計,因而c++就適應的問題規模而論,大小由之。

c++不僅擁有計算機高效執行的實用性特徵,同時還致力於提高大規模程式的程式設計質量與程式設計語言的問題描述能力。

世界上第一種計算機高階語言是誕生於2023年的fortran語言。之後出現了多種計算機高階語言。2023年,at&t的bell實驗室的d.

ritchie和k.thompson共同發明了c語言。研製c語言的初衷是用它編寫unix系統程式,因此,它實際上是unix的「副產品」。

它充分結合了組合語言和高階語言的優點,高效而靈活,又容易移植。

2023年,瑞士聯邦技術學院n.wirth教授發明了pascal語言。pascal語言語法嚴謹,層次分明,程式易寫,具有很強的可讀性,是第一個結構化的程式語言。

13樓:囚籠山人六

不是不可繼承,是派生類不可用呼叫基類的私有成員,呼叫和繼承不是一個意思。繼承父類其實父類裡所有的函式變數都是在工作的,只是不可讓子類去隨便改動和訪問

14樓:匿名使用者

沒錯啊基類是指左邊,既「被繼承「的類 派生類是指右邊

你的教科書圖畫得沒錯

15樓:匿名使用者

私有成員不是不能繼承,是不能直接繼承,需要借用別的函式

c++中,派生類的成員函式呼叫基類的受保護成員~~~

16樓:匿名使用者

不是很來清楚你的意圖!自

但是在c++中派生類的成員函式bai

是可以直接呼叫基類du的zhi受dao保護成員的。

set(staff & modification);

//傳一個基類的引用,就可以在set中直接修改資料,而不是修改拷貝了。

//但是在基類中,你得把部門,名字,考勤情況等設定為protected.

17樓:匿名使用者

**發上來看看

樓上說的對

在c++中派生類的成員函式是可以直接訪問基類的保護成員和公有成員。

18樓:尋國英酆子

public和protected函式可以直接呼叫。

如果被過載了可以使用

「基類::函式」

這樣的形式呼叫

如果是private就不行了,除非在基類友元自己

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

19樓:匿名使用者

例如:class a

;class b :private a

//可以訪問a

};class c : public b

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

C 類的公有繼承,基類的私有成員在派生類中不可見或不可訪問

3月21日晴 在c 語言中,一個派生類可以從一個基類派生,也可以從多個基類派生。從一個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為多繼承。方式如下 公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 公有繼承的特點是...

關於c基類派生類的引用和指標,關於C 基類 派生類的引用和指標

1 首先回答第一個問題 用基類的指標指向派生類的物件,這樣做可以體現c 的重要特性 多型性。多型性其實也就是動態聯編。這樣做的好處是 當基類裡面定義了一個虛成員函式的時候,其派生類裡面定義了同名的函式可以實現覆蓋。你的基類指標指向那個物件,就呼叫那個物件的該方法。我舉個例子你應該就明白了 class...

C 中繼承基類和派生類的關係,比如繼承方式,子類是不是至少擁有全部父類成員函式

子類是擁有全部類的成員函式,但是訪問的許可權就看父類的訪問修飾符 public,protected,private 子類要想訪問父類的資料成員,該資料的訪問許可權必須是public或者protected,public訪問 許可權最低,protected只能是自身類的成員函式,友元類與子類訪問,pri...