從面試題看繼承

2021-05-28 12:55:01 字數 703 閱讀 5563

創新工場一道面試題,發現對類繼承裡面的東東還不是特別清晰,梳理一下

class a

int getvalue()

};class b: public a

int getvalue()

};int main()

;class a;

class b :  a ;

class c :  b ;

class d : public x, public c ;

下面的轉換中哪些是不允許的?

d *pd = new d;

(a) x* px = pd; (c) b* pb = pd;

(b) a* pa = pd; (d) c* pc = pd;

預設的繼承方式是private,bc是錯誤的,執行程式輸出error c2243: 「型別轉換」: 從「d *」到「a *」的轉換存在,但無法訪問

因為c對b的繼承是私有繼承,使得在d中b的建構函式是不可訪問的,所以存在從"d*"到"b*"以及從"d*"到"a*"的轉換,但這些轉換不可訪問

覺得實際上沒有進行資料轉換操作,還是引用原來的物件,只是對資料的訪問介面變了,對d來說,b、a全部成員都是私有的,這時a* pa = pd;pa其實還是d類,但是經過a類指標用的全是a的成員,而對pd的實際型別來說都是私有的,無法訪問,所以編譯器不允許這種繫結

從面試題看技術學習

昨天師哥師姐參加了北京一家it公司的面試,說心裡話自己非常想去,非常想提前了解下公司的面試。無奈自己水平有限,沒有資格參加面試,無限羨慕中 大神們一歸來,我就開始詢問他們的面試過程,正所謂總結前人的經驗,做到時時刻刻站在巨人的肩膀上嘛!大神們感慨 面試問題都很有水平,巨集觀 細節兼顧,理論 實戰兼顧...

java面試題1 繼承 看程式寫結果

本題考查的內容 a 成員變數 就近原則 b this和super的問題 this訪問本類的成員 super訪問父類的成員 c 子類構造方法執行前預設先執行父類的無參構造方法 d 乙個類的初始化過程 成員變數初始化 預設初始化 顯式初始化 構造方法初始化 class fu class ziextend...

java面試題 有關於繼承的面試題

面試題 1,方法過載和方法重寫的區別?方法過載能否改變返回值型別?方法過載是在本類內方法的定義一樣,引數型別,引數個數不同,返回值型別不同 方法重寫是指子類的方法定義和父類的方法定義相同。其引數型別,引數個數,返回值型別都必須相同 方法過載能否改變返回值型別,因為與返回值無關。2,this與supe...