那么派生类指针和基类指针调用虚函数有什么区别
时间: 2023-12-14 11:34:06 浏览: 164
虚函数内存模型
在C++中,派生类可以继承基类的成员函数,包括虚函数。当基类指针或引用指向派生类对象时,如果该虚函数被声明为虚函数,则可以通过该指针或引用调用虚函数。这种情况下,基类指针或引用调用虚函数时,会根据指向的对象类型来确定调用哪个类的虚函数。
派生类指针和基类指针调用虚函数的区别在于,派生类指针调用虚函数时,会直接调用派生类中的虚函数,而基类指针调用虚函数时,会根据指向的对象类型来确定调用哪个类的虚函数。因此,如果派生类中重写了基类的虚函数,那么通过派生类指针调用虚函数时,会调用派生类中的虚函数;而通过基类指针调用虚函数时,会调用基类中的虚函数。
举个例子,假设有一个基类Animal和一个派生类Dog,它们都有一个虚函数speak()。如果我们用一个Animal指针指向一个Dog对象,那么通过Animal指针调用speak()时,会调用Animal类中的speak()函数;而通过Dog指针调用speak()时,会调用Dog类中的speak()函数。
阅读全文