其他分享
首页 > 其他分享> > 经常出现的“基类指针指向派生类对象”到底是什么东西?

经常出现的“基类指针指向派生类对象”到底是什么东西?

作者:互联网

首先要明确一点,派生类的对象可以被当做基类对象对待,因为派生类包含基类的所有成员。反之则不成立。

因此,将基类指针指向派生类对象是安全的。此时这个基类指针只能调用基类的成员函数。

如果试图用基类指针调用派生类才具有的成员函数,编译器会报错。虚函数的出现可以解决这个问题。通过基类指针在派生类对象上调用这个虚函数,实际调用的是这个虚函数的派生类版本。

回溯到“虚析构函数”的概念,如果基类指针指向一个派生类对象,析构函数不是虚函数的话,基类指针只能调用基类的析构函数,派生类中的一些内存可能无法释放,造成内存泄露。而把析构函数定义成虚函数,那么基类指针调用的将是派生类的析构函数,然后再调用基类的析构函数。这样就解决了内存泄露的问题。

 

//一个follow up question,如果把派生类指针指向基类对象会发生什么?此时编译会报错,需要进行显式的强制类型转换,把基类对象转换成派生类对象。

标签:调用,函数,对象,基类,派生类,经常出现,指针
来源: https://www.cnblogs.com/conanpeng/p/12796795.html