首页 > 试题广场 >

为什么将析构函数设置成虚函数

[问答题]
防止内存泄漏,当父类指针指向子类对象的时候,释放父类指针,如果此时析构函数不是虚函数,那么将只会调用父类的析构函数,不会调用子类的析构函数,造成内存泄漏问题。
发表于 2022-07-22 09:31:55 回复(0)
防止内存泄漏,当父类指针指向子类对象时,释放父类指针,只会调用父类的析构函数,不会调用子类析构函数,造成内存泄漏
发表于 2022-06-27 10:10:59 回复(0)
虚析构函数的主要作用是为了防止遗漏资源的释放,防止内存泄露。 如果基类中的析构函数没有声明为虚函数,基类指针指向派生类对象时,则当基类指针释放时不会调用派生类对象的析构函数,而是调用基类的析构函数,如果派生类析构函数中做了某些释放资源的操作,则这时就会造成内存泄露。
发表于 2022-07-30 18:15:24 回复(0)
将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。
发表于 2022-07-15 17:25:33 回复(0)
虚析构函数的主要作用是为了防止遗漏资源的释放,防止内存泄露。如果基类中的析构函数没有声明为虚函数,基类指针指向派生类对象时,则当基类指针释放时不会调用派生类对象的析构函数,而是调用基类的析构函数,如果派生类析构函数中做了某些释放资源的操作,则这时就会造成内存泄露。
发表于 2024-05-21 09:53:44 回复(0)
如果不将析构函数设置成虚函数,在使用多态的时候,可能会导致父类中的析构函数无法执行。进而导致包括但不限于,内存泄漏,连接未断开等各种错误。
发表于 2024-03-29 19:45:52 回复(0)
因为父类指针不会调用派生类的析构函数,如果派生类有堆上的内存 会导致无法释放 内存泄漏
编辑于 2024-03-18 21:39:12 回复(0)
主要是防止内存泄漏,当父类指针指向子类对象时,释放父类指针,只有析构函数是虚函数,才能正确调用子类的析构函数释放资源
发表于 2023-11-11 19:36:31 回复(0)
1. 目的:为了防止内存泄漏 2. 实现原理:有了虚析构函数,通过基类指针或者引用调用子类对象的时候,就会先调用子类的析构函数,之后,再调用父类的析构函数,从而达到子类和父类的资源完全释放。 3. 如果不实现:不会调用子类的析构函数,导致子类资源释放失败,从而造成内存泄漏。
发表于 2023-11-11 09:39:53 回复(0)
防止内存泄漏; 如果析构函数不是虚函数,当基类指针指向子类对象时,基类指针会调用基类的析构函数,如果子类的析构函数中有内存释放的操作,将会造成内存泄露。
发表于 2023-08-11 20:36:08 回复(0)
防御内存泄漏
发表于 2023-07-12 16:52:03 回复(0)
防止内存泄漏。当父类指针指向子类对象时,释放父类指针时,只会调用父类的析构函数而不会调用子类析构函数,这可能会造成内存泄漏。
发表于 2022-11-09 17:58:29 回复(0)
防止内存泄漏,当父类指针指向之类对象时,释放父类指针,只会调用父类析构函数,不会调用子类析构函数,造成内存泄漏
发表于 2022-09-25 09:29:18 回复(0)
防止调用函数时当前类的成员有漏释放的情况
发表于 2022-09-05 20:39:57 回复(0)
防止内存泄漏,当基类析构函数不是虚函数时,此时若调用析构函数只会调用基类的析构函数,子类没有调用自己的析构函数引起内存泄露
发表于 2022-07-27 09:15:11 回复(0)