區分接口繼承和實現繼承ide
類包含的成員函數種類函數
1.靜態函數spa
2.非靜態函數code
2.1 普通函數(非虛) non-virtualblog
2.2 虛函數繼承
2.2.1 純虛函數 pure-virtual接口
2.2.2 非純虛函數 impure-virtualci
1、接口繼承string
繼承類必需要實現聲明爲pure-virtual的函數,意味每一個繼承類的特異化實現class
2、實現繼承
繼承類若有須要能夠覆寫(override)基類的impure-virtual函數,當不覆寫時將使用基類提供的默認實現
3、普通非虛函數
繼承類不該聲明實現此類函數,不然該繼承類將隱藏基類的實現。此類函數的意義就是強制全部繼承類都使用基類的實現。
例子: 繪圖類結構中, Shape做爲抽象基類。
#pragma once #include <string> class Shape { public: virtual ~Shape(){} virtual void Draw() = 0; virtual void Error(const std::string& msg); int ObjectId() const; protected: private: }; class Rectangle : public Shape { public: void Draw() { //draw rectangle } void Error(const std::string& msg)override { //... } }; class Circle : public Shape { public: void Draw() { //draw circle } };