析構(gòu)函數(shù)為什么是虛函數(shù) 為什么構(gòu)造函數(shù)不能是虛函數(shù)?
為什么構(gòu)造函數(shù)不能是虛函數(shù)?構(gòu)造函數(shù)不能聲明為虛擬函數(shù)的原因是所謂的虛擬函數(shù)在多態(tài)性的情況下只執(zhí)行一個(gè)。從繼承的概念來(lái)看,總是需要先構(gòu)造父類(lèi)對(duì)象,然后再構(gòu)造子類(lèi)對(duì)象。如果構(gòu)造函數(shù)設(shè)置為虛函數(shù),那么在構(gòu)
為什么構(gòu)造函數(shù)不能是虛函數(shù)?
構(gòu)造函數(shù)不能聲明為虛擬函數(shù)的原因是所謂的虛擬函數(shù)在多態(tài)性的情況下只執(zhí)行一個(gè)。從繼承的概念來(lái)看,總是需要先構(gòu)造父類(lèi)對(duì)象,然后再構(gòu)造子類(lèi)對(duì)象。如果構(gòu)造函數(shù)設(shè)置為虛函數(shù),那么在構(gòu)造父類(lèi)構(gòu)造函數(shù)時(shí),必須顯示調(diào)用構(gòu)造。另一個(gè)原因是為了防止意外重寫(xiě)與父類(lèi)的構(gòu)造函數(shù)相同的子類(lèi)中的函數(shù),父類(lèi)的構(gòu)造函數(shù)將被重寫(xiě),也就是說(shuō),父類(lèi)的構(gòu)造將不會(huì)完成,并且會(huì)發(fā)生錯(cuò)誤。----在子類(lèi)繼承父類(lèi)的public方法之后,可以向public添加新的方法和屬性(屬性通常放在private或protect中)。這是正確的,似乎環(huán)境是MSVC。如果目標(biāo)文件中有一個(gè)符號(hào)表,實(shí)際上,最直觀(guān)的方法是轉(zhuǎn)到符號(hào)表,找出與修改后的構(gòu)造函數(shù)名稱(chēng)相對(duì)應(yīng)的地址項(xiàng)。如何操作取決于主體需要在什么條件下找到地址去做。