Boolan 第五周 高級oop下
vptr:虛指針指向虛表,若類中含有虛函數晋被,不論數量荔烧,則類的空間內含有一個指向虛表的指針吱七。
vtbl:虛表,表內存放指向虛函數的指針茴晋。
示例:
☆若需要使用容器存放不同子類的元素陪捷,可以將元素的地址以父類指針形式存放在容器內回窘。
函數的動態(tài)綁定(dynamic binding):ptr指向不同類诺擅,調用不同的函數。
動態(tài)綁定實現條件:1啡直、通過指針調用烁涌;2、up-cast酒觅;3撮执、調用虛函數
模板方法的實現原理:
對象及函數const使用矩陣:
☆當成員函數的const和non-const版本同時存在時,const object只能調用const版本舷丹,non-const object智能調用non-const版本抒钱。
重載new&delete作用:管理內存。
重載new&delete分為:全局重載和類內重載颜凯。
全局重載示例:
類內重載示例:
重載new()谋币、dellete():可以手動寫任意數量的重載函數,但是參數列表必須不同症概,第一個參數必須為size_t類型蕾额,其余以new指定的
placement argument為初值。例:Foo* pf=new(300,'c')Foo;
重載delete()說明:正常情況下不會被調用彼城,僅當程序在ctor時發(fā)生異常(throw exception)時會被調用诅蝶,若不寫編譯也不會報錯退个,代表不在乎這個異常。
重載placement? new實現額外空間的申請示例: