一、静态类型、动态类型
静态类型:在被声明时所采用的的类型
动态类型:目前所知对象的类型
演示案例
下面是一个继承体系
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*: