2010년 6월 22일 화요일

간단하지만 헷갈리는 virtual destructor

이 자료는 http://glotalk.egloos.com/2018168 에서 퍼옴을 밝힙니다.

#include "stdafx.h"
struct A1      { virtual ~A1() { printf("A1 dtor\n"); } };
struct A2 : A1 { virtual ~A2() { printf("A2 dtor\n"); } };
struct A3 : A2 { virtual ~A3() { printf("A3 dtor\n"); } };
struct B1      { ~B1() { printf("B1 dtor\n"); } };
struct B2 : B1 { ~B2() { printf("B2 dtor\n"); } };
struct B3 : B2 { ~B3() { printf("B3 dtor\n"); } };
int _tmain(int argc, _TCHAR* argv[])
{
    A1 * a = new A3;
    delete a;
    printf("\n");

    A3 * a2 = new A3;
    delete a2;
    printf("\n");

    B1 * b = new B3;
    delete b;
    printf("\n");

    B3 * b2 = new B3;
    delete b2;
    printf("\n");

    return 0;
}


 

출력은

A3 dtor
A2 dtor
A1 dtor

A3 dtor
A2 dtor
A1 dtor

B1 dtor

B3 dtor
B2 dtor
B1 dtor

댓글 없음: