虛函式是一種成員函式,它是一種成員函式,它為派生類中具有相同名字,接受相同引數的函式定義了乙個一致的呼叫介面。
當呼叫乙個虛函式時,實際被呼叫的是對應派生類中的函式。
在派生類中定義與基類中虛函式名字和引數相同的函式,產能為虛函式被覆蓋(override)。
class shape(); //虛析構函式
//....
};class circle : public shape ;
大致來說,基類中(在上述例子中是shape)的虛函式為派生類(在上述例子中是circle)定義了乙個呼叫介面:
void f(shape& s)
void g()
, 4};
f(c); //將會呼叫circle的draw
}
需要注意到是,f()並不知道circle類,它只知道shape。定義了虛函式的類都有乙個額外的指標,通過這個指標可以找到覆蓋函式。
定義了虛函式的類通常需要定義虛析構函式。
可以用override字尾表明覆蓋基類虛函式的願望。eg
class square : public shape
public:
;
抽象類是只能用作基類的類,c++不允許建立抽象類的物件。
shape s; //錯誤,shape是抽象類
class circle : public shape
;circle c(p,20); //正確,circle不是抽象類
使乙個類稱為抽象類的最常用的方法是定義至少乙個純虛函式。
純虛函式是必須在派生類中被覆蓋的虛函式:
class shape;
另一種很少使用但同樣有效的定義抽象類的方法是將類的所有建構函式都宣告為保護的。 類的相關知識點
類的成員屬性私有化 include include using namespace std 成員屬性設定為私有 1.可以自己控制讀寫許可權 2.對於寫可以檢測資料的有效性 設定人類 class person 獲取姓名 string getname 讀年齡 intgetage 寫入情人 void se...
c 相關知識點
類繼承 基類指標與引用可以隱示的指向派生類的物件,但只能使用基類的函式。多型屬於豎向函式過載,派生類函式的名與基類函式得名一樣,但在呼叫多態函式時有些區別,如果該函式是通過引用或者指標而不是物件呼叫的,如果這個函式在多型過程中沒有使用關鍵字virtual那麼程式將根據引用或者指標選擇實現方法。如果函...
python 類相關知識點
知識點一 hasattr類中是否含有某屬性 hasattr object,name object 物件。name 字串,屬性名。return 如果物件有該屬性返回 true,否則返回 false。class variable x 1 y a z true dd variable print hasa...