一、在基類中將派生類會從新定義的方法聲明爲虛方法,基類用virtual聲明成員函數爲虛函數,=0表示該函數爲純虛函數ide
二、純虛函數的類不能建立對象,這種類稱爲抽象類。函數
三、在編譯過程當中進行聯編稱爲靜態聯編,在運行時編譯的方法稱爲動態聯編。C++中虛函數就是動態聯編。靜態聯編的效率更高,但虛函數在運行以前不知道類型是什麼,不知道哪一個虛函數,因此爲動態聯編,以下b->View()調用的是BrassPlus中的方法。spa
class Brass { public: virtual void View() const; } class BrassPlus:public Brass{ public: virtual void View() const; } BrassPlus a; Brass *b; b=&a; b->View();
3 、b是一個基類指針,可是能夠調用同一類族中不一樣類的虛函數,這就是虛函數多態性指針
4,虛函數的存儲方式:每一個類編譯器都建立一個虛函數地址標,函數調用時埋在這個表中找到函數地址code
五、通常將基類的析構函數定義爲虛函數,析構時先析構派生類,在析構基類。對象
六、override能夠避免派生類中忘記重寫虛函數的錯誤,在派生類申明中加上override,若是沒有被重寫,編譯器會報錯。blog
class BrassPlus:public Brass{ public: virtual void View() const override; }