C++中析构函数为什么有时候写成虚拟的
2017-10-14 17:22
302 查看
参考了网上的文章:http://blog.csdn.net/starlee/article/details/619827?reload
在一个类作为基类的时候,又创建(new)一个子类,当用基类指向这个新创建的子类,进行到delete基类对象的时候,如果基类的析构函数没有写成虚拟的,则调用的就只有基类的析构函数,而不会调用子类的析构函数,造成内存泄漏!
虚拟函数就是实现了动态编译的特点,如果写成虚拟的,自然就会找到实际的对象(父对象还是子对象),析构的时候也就可以找到真正需要析构的函数。
在一个类作为基类的时候,又创建(new)一个子类,当用基类指向这个新创建的子类,进行到delete基类对象的时候,如果基类的析构函数没有写成虚拟的,则调用的就只有基类的析构函数,而不会调用子类的析构函数,造成内存泄漏!
虚拟函数就是实现了动态编译的特点,如果写成虚拟的,自然就会找到实际的对象(父对象还是子对象),析构的时候也就可以找到真正需要析构的函数。
相关文章推荐
- C++:析构函数写成虚函数是干什么用的,为什么要这么写?
- C++ 虚函数、多态、为什么需要虚拟析构函数
- 为什么C++基类析构函数写成虚函数
- C++析构函数为什么要为虚函数
- C++析构函数为什么要为虚函数
- C++中基类的析构函数为什么要用virtual虚析构函数
- C++析构函数为什么要为虚函数
- C++析构函数为什么要定义成虚函数
- C/C++基类的析构函数为什么要为虚函数
- 在C++中,为什么有时析构函数必须写为虚函数
- C++析构函数为什么要为虚函数
- C++中析构函数为什么要是虚函数
- 什么时候需要C++虚拟析构函数
- c++ 虚拟析构函数
- OJ 里面的 G++ 和C++ 到底有什么区别, 为什么有时候G++能过,C++不能过,而有时候C++能过,G++不能过?
- C++析构函数为什么要为虚函数
- C++中父类的析构函数为什么要为虚函数
- C++中基类的析构函数为什么要用virtual虚析构函数
- C++中基类的析构函数为什么要用virtual虚析构函数
- C++为什么要有构造函数和析构函数