c語言運(yùn)算符號(hào) 構(gòu)造函數(shù)為什么不可以聲明為虛函數(shù)?
構(gòu)造函數(shù)為什么不可以聲明為虛函數(shù)?如果目標(biāo)文件中有一個(gè)符號(hào)表,最直觀的方法是在符號(hào)表中找到與修改后的構(gòu)造函數(shù)名稱相對(duì)應(yīng)的地址項(xiàng)。如何操作取決于主體需要在什么條件下找到地址去做。哪些函數(shù)能被聲明為虛函數(shù)
構(gòu)造函數(shù)為什么不可以聲明為虛函數(shù)?
如果目標(biāo)文件中有一個(gè)符號(hào)表,最直觀的方法是在符號(hào)表中找到與修改后的構(gòu)造函數(shù)名稱相對(duì)應(yīng)的地址項(xiàng)。如何操作取決于主體需要在什么條件下找到地址去做。
哪些函數(shù)能被聲明為虛函數(shù)?為什么?
非靜態(tài)成員函數(shù)可以聲明為虛擬函數(shù)。
因?yàn)樗菍?duì)象的一部分
內(nèi)聯(lián)函數(shù)能不能定義成虛函數(shù)啊?
函數(shù)不能既是虛擬函數(shù)又是內(nèi)聯(lián)函數(shù)。嚴(yán)格地說,即使可以創(chuàng)建內(nèi)聯(lián)虛擬函數(shù),或者將虛擬函數(shù)聲明為內(nèi)聯(lián)函數(shù),編譯器也不會(huì)內(nèi)聯(lián)展開此類函數(shù),而是將其視為普通函數(shù)。編譯器拒絕展開非虛擬內(nèi)聯(lián)函數(shù)。C編譯器通常首先報(bào)告一個(gè)錯(cuò)誤:“inline interrupt-function too large”。如果內(nèi)聯(lián)函數(shù)調(diào)用自身,或?qū)⑵涞刂穫鬟f到某處,則編譯器必須生成一個(gè)普通(內(nèi)聯(lián))函數(shù)。對(duì)于內(nèi)聯(lián)虛擬函數(shù),編譯器將它們視為普通虛擬函數(shù)。最好不要在應(yīng)用程序中使用內(nèi)聯(lián)虛擬函數(shù),因?yàn)樗鼈儙缀鯊奈磾U(kuò)展過。實(shí)際上,開發(fā)人員通常在類聲明中放置一個(gè)簡(jiǎn)短的虛函數(shù)。這樣做的目的不是將函數(shù)擴(kuò)展為內(nèi)聯(lián)函數(shù),而是使程序更加方便和可讀。