一、靜態類型、動態類型
靜態類型:在被聲明時所采用的的類型
動態類型:目前所知對象的類型
演示案例
下面是一個繼承體系
class Shape {public:enum ShapeColor { Red, Green, Blue };virtual void draw(ShapeColor color = Red)const = 0;};class Rectangle :public Shape {public:virtual void draw(ShapeColor color = Green)const = 0;};class Circle :public Shape {public:virtual void draw(ShapeColor color)const = 0;};
現在我們定義下面的代碼,它們都被聲明為pinter-to-Shpae類型,因此它們不論它們指向什么,靜態類型都是Shape*: