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