参考《C++编程思想》第2版_第1卷。
多态基于迟绑定,表现形式是继承和虚函数。程序运行时,当向上类型转换为父类类型后,C++根据对象的地址来确定应该执行父类函数还是子类的函数。上述“转换”是名义上的转换,其实际地址还是原类型,若将void ShowWhoDo(A &aa)中&删除,则无法体现多态。
class A
{
public:
virtual void Do()
{
cout << "Do By A;" << endl;
}
};
class B:public A
{
public:
void Do()
{
cout << "Do By B;" << endl;
}
};
class C:public B
{
public:
void Do()
{
cout<<"Do By C;" << endl;
}
};
void ShowWhoDo(A &aa)
{
aa.Do();
}
void main()
{
A a;
ShowWhoDo(a);
B b;
ShowWhoDo(b);
C c;
ShowWhoDo(c);
system("pause");
}