派生類的自我總結

2021-10-05 13:57:35 字數 1704 閱讀 5478

1.為什麼要用派生?

很多的時候我們需要乙個類裡面的成員在多個類中使用時,這種時候為了避免麻煩,程式設計師就想到了使用派生類。派生類是在已有類的基礎上產生新的類,這個類包含了父類的已有特性,同時包含了自己的一些特性。

2.在繼承時多出來的protected的使用規則

protected宣告的是保護成員,保護成員可以被本類的成員函式訪問,也可以被本類的派生類的成員函式訪問,而類以外的任何訪問都是非法的,所以說他是半隱藏的。

3.派生類的三步工作:

(1)派生類會從基類接受所有的成員,除了建構函式和析構函式。

(2)派生類不可以選擇接收的基類物件,但可以可以對基類的這些成員進行某些調整。可以通過改變繼承方式可以使得原來類裡面的共有成員變為私有。派生類也可以改變資料成員,在派生類中對基類的成員重新定義,定義時要用相同的變數名,這樣在訪問派生類中的新定義的資料時就會訪問新的而不會訪問基類中的,在對成員函式進行重新定義時要注意函式的引數應該相同。如果不相同就會認為派生類過載了基類的成員函式。

3.可以為派生類增加新的資料成員和成員函式來實現派生類對基類的功能的擴充套件。基類的建構函式和析構函式是不能被繼承的,因此一般在派生類中重新定義構造和析構函式。

4.派生類不同繼承的基本區別(繼承方式分為共有public私有private保護protected)

(1)基類的私有成員,無論是哪一種方式的繼承都無法直接繼承,在派生類中永遠是無法訪問的。

(2)基類的公有成員,

當類的繼承為公有繼承時,基類中所有的公有成員在派生類中還是公有成員

當類的繼承為私有繼承時,基類中的所有公有成員在派生類中會是私有成員

當類的繼承為保護繼承時,基類中的所有公有成員在派生類中會是保護成員

(3)基類的保護成員

當類的繼承為公有繼承時,基類中的保護成員在派生類中還是保護成員

當類的繼承為私有繼承時,基類中的保護成員在派生類中會是私有成員

當類的繼承為保護繼承時,基類中的保護成員在派生類中還是保護成員

總結:基類的私有成員不能繼承,基類的公有成員什麼繼承方式在派生類中就會變成什麼成員,基類的保護成員在繼承時只有私有繼承會將基類的保護成員改變為私有,其他兩種繼承方式都還會是保護成員。

5.分析三種繼承的訪問規則:

(1)私有繼承

私有繼承會將基類的公有成員和保護成員在派生類中私有成員,因此作為派生類的私有成員,只能在派生類中訪問而不能在類外直接通過派生類的物件訪問,而私有成員不能繼承到派生類中,派生類中也無法訪問,只能在基類中訪問。經過一次私有繼承之後,基類中繼承的所有成員在派生類中都會是私有的,因此想要再次進行派生,基類中全部的資料都不能在二次派生的派生類中訪問。

(2)公有繼承

公有繼承還是一樣無法繼承基類的私有成員,而基類的公有成員在公有繼承下還是公有成員,基類的保護成員也還是保護成員,公有成員在類內可以訪問,類外的物件也可以訪問。而保護成員前面提到,它是半隱藏的,除了可以繼承它和私有成員一樣只能在類的內部進行訪問,不能通過派生類的物件進行訪問。基類的私有成員在派生類中也是可以通過基類在公有成員定義的函式來間接訪問。

(3)保護繼承

保護繼承也是無法繼承私有成員,而基類的公有成員和保護成員都會在派生類中被繼承為保護成員,保護成員只能在派生類中訪問不能在類外通過物件訪問。

總結來看,私有繼承最大再是保護繼承最後是公有繼承,只要存在私有繼承就都會所有資料繼承為私有成員,再是保護繼承就都會繼承為保護,而公有繼承因為最小所以改變不了私有成員和保護成員,所以基類的私有在派生類中還是私有成員,基類的保護成員在派生類中還是保護成員。

構造派生類

include include 繼承 構造派生類 using namespace std class student student 這個就是預設建構函式。就不能再有student std cout student 進一步解釋 對於student string pname noname 不輸入引數是...

生成派生類

1.吸收基類成員 將基類成員全盤吸收 派生類包含了除構造和析構函式之外所有成員。定義派生類後自動完成,無法干預 2.改造基類成員 1 基類成員訪問控制問題,依靠派生類定義時的繼承方式來控制。2 對基類資料或函式成員覆蓋與隱藏。同名隱藏 申明了乙個與基類成員同名的新成員 if是成員函式則參數列必須相同...

派生類習題

class person 建立乙個派生類student,增加以下成員資料 int id 學號 float cpp score cpp上機成績 float cpp count cpp上機考勤 float cpp grade cpp總評成績 總評成績計算規則 cpp grade cpp score 0....