課程
/后端開發
/C++
/C++遠征之多態篇
為什么成員數據有內存存放,虛成員函數能通過虛函數指針=》虛函數表找到 普通成員函數至少有函數指針吧 不然怎么找到實現呢?如果有為什么對象大小只有數據成員的大小 奇怪
2017-02-12
源自:C++遠征之多態篇 3-1
正在回答
因為,內存中有程序代碼區,堆區,棧區,全局區(靜態區),文字常量區。在定義一個類時,它的成員函數,虛構函數,構造函數就被存入程序代碼區,供所有對象調用。
在實例化一個類的對象時,并沒有拷貝類的函數,僅僅存入了數據成員,因此類的對象中有數據成員,然而當用父類的指針指向子類的對象時,調用同名函數時會調用父類的同名函數,當想要調用子類的同名函數引入了虛函數,
當調用普通成員函數時,計算機可以在代碼區識別該函數,無需用函數指針,因而,在對象中只有數據成員的大小。
qq_隨心所欲_9 提問者
舉報
本教程將帶領大家體會面向對象三大特性中的多態特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-02-13
因為,內存中有程序代碼區,堆區,棧區,全局區(靜態區),文字常量區。在定義一個類時,它的成員函數,虛構函數,構造函數就被存入程序代碼區,供所有對象調用。
在實例化一個類的對象時,并沒有拷貝類的函數,僅僅存入了數據成員,因此類的對象中有數據成員,然而當用父類的指針指向子類的對象時,調用同名函數時會調用父類的同名函數,當想要調用子類的同名函數引入了虛函數,
當調用普通成員函數時,計算機可以在代碼區識別該函數,無需用函數指針,因而,在對象中只有數據成員的大小。