1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#include "stdafx.h" #include <stdio.h> #include <string.h> #define DEBUG class A{ char* a; public: A(char* s){ a=new char[strlen(s)+1]; strcpy(a,s); } virtual ~A(){ delete[] a; printf("Destructor of class A\n"); } virtual void Print() { printf("%s\n",a); } }; class B : public A{ char* b; public: B(char* s,char* t):A(t){ b=new char[strlen(s)+1]; strcpy(b,s); } virtual ~B(){ delete[]b; printf("Destructor of class B\n"); } virtual void Print(){ A::Print(); printf("%s\n",b); } }; void main() { A* pA; pA=new B("hello","world"); pA->Print(); delete pA; #ifdef DEBUG //cmd char e; scanf("%c",&e); #endif } |
상위 클래스로 사용될 것 같은 클래스의 생성자에서 동적으로 메모리를 할당하는 경우, 소멸자를 가상으로 선언하라.