1. 消息的多态性
C++把类看作类型,把以public方式(严格讲:只有public方式)继承的派生类看做基类的子类型,这样就使得在C++面向对象程序中存在下面的三种多态:
1)对象类型的多态:派生类对象的类型既可以是派生类,也可以是基类。
2)对象标志的多态:基类的指针或引用可以指向或引用基类对象,也可以指向或引用派生类对象。(但是派生类的指针只能指向或引用派生类对象,不能指向或引用基类对象,可以理解为可以将多的给少的,但是不能把少的给多的。)
3)消息的多态,一个可以发送到基类对象的消息,也可以发送到派生类对象。
2. 静态绑定
在编译时刻绑定数据的类型。(默认)
3. 动态绑定
在运行的时候绑定数据的类型。
class A
{
int x,y;
public:
void f();
}
class B: public A
{
int z;
public:
void f();
void g();
}
void func1(A& x)
{
x.f();//调用A::f,因为C++是静态绑定
}
void func2(A* p)
{
p->f();//调用A::f,因为C++是静态绑定
}