-
隱藏、覆蓋和重載的區別: 隱藏和覆蓋是發生在繼承類的中同名的問題,作用域是不同的;重載函數的范圍是相同的; 隱藏:派生類的函數屏蔽了與其同名的基類函數; 父子關系 成員同名 隱藏 子類對象調用同名的成員函數時,它調用的是子類的同名函數; 子類對象通過::調用父類的類型名和同名函數時,它調用的是父類的成員函數; 若想調用父類的同名函數或數據成員時,要加上父類的類名; (1)如果派生類的函數與基類的函數同名,但是參數不同。此時,不論有無 virtual 關鍵字,基類的函數將被隱藏(注意別與重載混淆) 。 (2)如果派生類的函數與基類的函數同名,并且參數也相同,但是基類函數沒有 virtual關鍵字。此時,基類的函數被隱藏(注意別與覆蓋混淆) 覆蓋:指派生類函數覆蓋基類函數; 覆蓋特征是: (1)不同的范圍(分別位于派生類與基類); (2)函數名字相同; (3)參數相同; (4)基類函數必須有 virtual 關鍵字。 重載: 成員函數被重載的特征:? (1)相同的范圍(在同一個類中);? (2)函數名字相同;? (3)參數不同;? (4)virtual?關鍵字可有可無。查看全部
-
http://img1.sycdn.imooc.com//55d324bc0001c80012800720-120-68.jpg查看全部
-
私有繼承時基類中各成員屬性均變為private,并且基類中private成員被隱藏。派生類的成員也只能訪問基類中的public/protected成員,而不能訪問private成員;派生類的對象不能訪問基類中的任何的成員。 保護繼承時基類中各成員屬性均變為protected,并且基類中private成員被隱藏。派生類的成員只能訪問基類中的public/protected成員,而不能訪問private成員;派生類的對象不能訪問基類中的任何的成員。 4天前查看全部
-
http://img1.sycdn.imooc.com//55d2928d0001703a12800720-120-68.jpg查看全部
-
http://img1.sycdn.imooc.com//55d2899a0001afd312800720-120-68.jpg查看全部
-
基類和派生類中同名的函數不能形成重載,只能形成隱藏。查看全部
-
B類從A類派生,那么B類中含有A類的所有數據成員。 不大理解,B類也包含A類私有的數據成員嗎?查看全部
-
子類中的函數會隱藏父類中的同名函數,實例化子類對象時,只能訪問到子類中的同名函數。訪問父類中的同名函數要用一種特殊的方法:中間加入“父類名::”。盡量避免數據成員同名。查看全部
-
派生類構造函數執行的一般次序: 1. 最新調用基類的構造函數,多個基類則按派生類聲明時列出的次序,從左到右調用,而不是初始化列表中的次序。 2. 再次調用對象成員(子對象)的構造函數,按類聲明中對象成員出現的次序調用,而不是初始化列表中的次序。 3. 最后執行派生類的構造函數。查看全部
-
MigrantWorker::MigrantWoker(string name,string code):Famer(names),Worker(code)查看全部
-
Person *p=new Soldier;//父類指針指向子類堆的對象,釋放p后,執行了父類的析構函數,子類沒執行,會造成內存泄漏。這時可以用虛析構函數來解決,在父類的析構函數前加virtual。查看全部
-
v u 駒過查看全部
-
用宏定義來解決重定義: #ifndef"名稱" #define"名稱" #endif查看全部
-
菱形繼承中,既有多繼承又有多重繼承。此時農民工類會有兩份繼承來的人的數據,用虛繼承可以避免這種情況查看全部
-
實現一個子類時,會先依次調用每一個父類的構造函數,順序與初始化列表中的順序是一樣的。查看全部
舉報
0/150
提交
取消