Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Polymorphism/virtual destructor.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ int main() {

`` Parent 소멸자 ``

이 결과를 봤을 때 부모 클래스만 소멸되고 자식 클래스는 소멸이 되지 않은 모습이다. 그래서 `` 메모리 누수`` 가 발생하게 된다. 메모리 누수가 쌓이게 되면 `` 시스템에 부하가 갈수 있다. `` 이 문제를 해결하기 위해서 부모 클래스의 소멸자가 가상함수가 되어야한다. 부모 클래스의 소멸자 앞에 virtual을 붙이면 자동으로 자식 클래스의 소멸자들은 가상함수가 된다.
이 결과를 봤을 때 부모 클래스만 소멸되고 자식 클래스는 소멸이 되지 않은 모습이다. 그래서 ** 메모리 누수 ** 가 발생하게 된다. 메모리 누수가 쌓이게 되면 ** 시스템에 부하가 갈수 있다. ** 이 문제를 해결하기 위해서 부모 클래스의 소멸자가 가상함수가 되어야한다. 부모 클래스의 소멸자 앞에 virtual을 붙이면 자동으로 자식 클래스의 소멸자들은 가상함수가 된다.
다음은 가상 소멸자를 사용한 프로그램이다.
``` #include <iostream>
using namespace std;
Expand Down Expand Up @@ -88,3 +88,4 @@ int main() {
Child 소멸자 ``

자식 클래스를 가진 클래스라면 부모 클래스의 소멸자에 virtual을 붙여 가상 소멸자로 만드는 것이 좋다. 소멸자가 가상 함수라면 메모리 누수도 발생하지 않고 손해볼 게 없으나 가상 소멸자가 아니라면 손해볼 것이 많다.