[C++] 가상 소멸자와 참조자

dd_ddong·2022년 8월 2일
0

c++

목록 보기
28/38

가상 소멸자

int main () 
{
	First* drv1 = new Third();
    delete drv1;
}

만약 위와 같은 상황이 있다면 Base의 소멸자가 실행된다.
그러면 Derived에 정의된 ~Derived가 호출되지 않아 메모리해제가 실행되지 않을 수도 있다.

따라서 객체에서 동적할당을 했다면 소멸자를 virtual키워드를 이용해 가상소멸자로 만들어줘야 한다.

가상소멸자를 이용하면 소멸자가 호출될때 ~First에서 ~Third로 소멸자호출이 바뀌고 유도클래스의 소멸자 호출 후 기초클래스의 소멸자가 호출된다.

참조자의 객체 참조

기초클래스의 참조자로 유도클래스 객체 참조가 가능하다.

int main()
{
	Third third;
    Second& sec = third;
    First& fir = sec;
}

0개의 댓글