学过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+&
本文探讨了C++中实现多态的原理,尤其是为何需要使用虚函数、指针或引用。通过实例分析,揭示了在对象赋值时虚函数表并未传递,从而解释了为什么直接赋值无法实现多态。同时,自定义赋值运算符`operator=`后,证实了对象访问成员函数不依赖虚函数表。最后指出,实现多态必须借助指针或引用。
最低0.47元/天 解锁文章
499

被折叠的 条评论
为什么被折叠?



