学过C++的都知道,要实现C++的多态性必须要用到虚函数,并且还要使用引用或者指针,以前学习的时候书本上也是这么说,
但是书本上没有说为什么? 其实只要你认真思考过这个问题你会有三个疑问:
为什么要用虚函数?
为什么要用指针或者引用?
为什么使用派生类和基类对象之间直接赋值不能实现??
一个简单的例子:
class A
{
public:
virtual void print()
{cout<<"A"<<endl;}
};
class B:public A
{
public:
void print()
{cout<<"B"<<endl;}
};
int main()
{
A a;
B b;
A *pa = &b;//能实现多态
pa->print();
a = b; //不能实现多态,为什么?
a.print();
return 0;
}
进一步的,了解C++的人都应该知道只要有虚函数的类就会有一张虚函数表,多态就是通过这张表来实现的。
所以,只要你不断探索下去,就会很快发