C++虚函数简单介绍

如果派生类在继承了基类后直接重写了基类的某个方法,当使用基类指针指向派生类实例时,调用的方法其实是调用的父类的方法。要实现多态,则需要使用虚函数。(动态多态性)

内存泄露

如果同样是上面的情况,需要释放两个指针指向的空间时,则会造成内存泄漏,因为在默认情况下调用的析构函数是基类的析构函数,而没有调用子类的析构函数。

1
2
3
4
5
6

Shape *shape1=new Circle(4.0);
Shape *shape2=new Rect(3.0,5.0);

delete shape1;
delete shape2;

如果在基类的析构函数声明虚函数,这样基类指针指向的是哪个对象,销毁的时候派生类的析构函数也会执行,再执行基类的析构函数。