關於c 繼承的一些問題

2021-10-11 17:36:24 字數 1240 閱讀 4194

​ 繼承是物件導向軟體技術當中的乙個概念,與多型、封裝共為物件導向的三個基本特徵。繼承可以使得子類具有父類的屬性和方法或者重新定義、追加屬性和方法等。

​ 被繼承的類稱為基類或者是父類;繼承的類被稱為子類或者是派生類。

​ 繼承方式分為三類:公有繼承、保護繼承、私有繼承。三類繼承的不同之處,是改變繼承成員資料的訪問許可權

public

protected

private

公有繼承(public)

public

protected

不可見保護繼承(protected)

protected

protected

不可見私有繼承(private)

private

private

不可見​ 1.父類不能給子類賦值,子類可以給父類賦值。因為子模擬父類空間大,能夠填充滿父類的空間。

​ 2.父類指標可以指向子類物件,子類指標不能指向父類物件。因為子類指標指向的空間比父類大,有一些額外的值無法預料。

​ 3.父類和子類可以出現同名的變數,但二者作用域不同

class

parent

;class

child

:public parent

;

​ 4.靜態變數整個家族都共用

​ 1.多繼承會出現兩個不明確的變數,解決方法:虛繼承,使得最終繼承只有乙個確定的變數。

​ 如圖:

​ 家具類具有成員資料m,而床類和沙發類同時繼承家具類,因此二者都有資料成員m;而此時沙發床通過多繼承,繼承床類和沙發類,則m拷貝了兩份,因此沙發床在呼叫m的時候具有二義性,無法確定到底是繼承誰的m。

解決方法:床類和沙發類在繼承家具類的時候採用虛繼承的方法,採用虛繼承以後,沙發床在繼承二者時,發現二者繼承了同乙份變數便只會拷貝一次。

class

bed:

virtual

public furniture

class

sofa

:virtual

public furniture

class

sofabed

:public bed,

public sofa

繼承中的一些問題

1.本質 達到 復用,子類可以復用父類的方法和屬性 2.繼承關係中構造方法的呼叫關係 子類的任何乙個構造方法,總是會呼叫父類中的某乙個構造方法 預設情況下,呼叫父類無參構造方法 可以使用super關鍵字,在子類構造方法中的第一行呼叫 父類指定的構造方法 3.方法覆蓋 重寫 覆蓋了父類的方法 要求 同...

C 一些問題

1 if else語句和switch case語句的效率分析對比 switch效率高。switch的效率與分支數無關,當只有分支比較少的時候,if效率比switch高,因為switch有跳轉表。分支比較多,那當然是switch 根據大量的實際程式測試 不考慮不同的編譯器優化程度差異,假設都是最好的優...

關於面試的一些問題

面試過程中,面試官會向應聘者發問,而應聘者的回答將成為面試官考慮是否接受他的重要依據。對應聘者而言,了解這些問題背後的 貓膩 至關重要。本文對面試中經常出現的一些典型問題進行了整理,並給出相應的回答思路和參 讀者無需過分關注分析的細節,關鍵是要從這些分析中 悟 出面試的規律及回答問題的思維方式,達到...