c++關(guān)鍵字 哪些函數(shù)能被聲明為虛函數(shù)?為什么?
哪些函數(shù)能被聲明為虛函數(shù)?為什么?非靜態(tài)成員函數(shù)可以聲明為虛擬函數(shù)。因為它是對象的一部分1。虛函數(shù)的概念虛函數(shù)是用virtual關(guān)鍵字聲明的基類函數(shù)。如果一個函數(shù)在基類中被指定為virtual,并且在
哪些函數(shù)能被聲明為虛函數(shù)?為什么?
非靜態(tài)成員函數(shù)可以聲明為虛擬函數(shù)。
因為它是對象的一部分
1。虛函數(shù)的概念
虛函數(shù)是用virtual關(guān)鍵字聲明的基類函數(shù)。如果一個函數(shù)在基類中被指定為virtual,并且在派生類中有該函數(shù)的另一個定義,編譯器將知道我們不希望靜態(tài)連接該函數(shù)。我們真正需要的是根據(jù)調(diào)用函數(shù)的對象的類型來選擇在程序的特定位置調(diào)用哪個函數(shù)。
2. Define
語法:virtual function return type function name(parameter table){function body}
虛擬函數(shù)必須是基類的非靜態(tài)成員函數(shù),其訪問權(quán)限可以是private、protected或public。虛擬函數(shù)的一般形式在基類的類定義中定義:
類基類名稱{
…
要在派生類中重載的虛擬返回值類型函數(shù)名稱(參數(shù)列表);
虛函數(shù)的定義?
函數(shù)不能同時是虛擬函數(shù)和內(nèi)聯(lián)函數(shù)。嚴格地說,即使可以創(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ù),而是使程序更加方便和可讀。