#include<iostream>
using namespace std;;
///////////////////////////////////////////////////////////////
// 가상 소멸자 이야기
// 1. 결론 : 모든 부모의 소멸자는 반드시 가상이어야 한다.
// 어제배운 모든 인터페이스(Ivalidator 등) dp qksemtl rktkd thaufwkfmf cnrkgodigksek.
//
//////////////////////////////////////////////////////////////
/*
//1.
class Base{
//아래와 같은 문제를 해결하기 위해서 소멸자를 넣어야한다.
//virtual ~Base(){}
};
class Derived : public Base{
public:
Derived() { cout<< " 메모리 할당 " << endl;}
~Derived() {cout << "메모리 해지 " << endl;}
};
int main(){
Base *p = new Derived;
delete p; //type 이 Base 이기 떄문에 소멸자가 가상함수가 아니라면 P의 타입만 가지고 소멸자 호출.
// 결정한다. static binding.
}
*/
//실행해보세요
/*
//12.
class Base{
//아래와 같은 문제를 해결하기 위해서 소멸자를 넣어야한다.
//virtual ~Base(){}
protected:
~Base{} // 가상 소멸자의 오버헤드를 없애는 기술
//부모 타입으로는 절대 delete 하지말라는 철학.
};
class Derived : public Base{
public:
Derived() { cout<< " 메모리 할당 " << endl;}
~Derived() {cout << "메모리 해지 " << endl;}
};
int main(){
Base *p = new Derived;
delete p; //type 이 Base 이기 떄문에 소멸자가 가상함수가 아니라면 P의 타입만 가지고 소멸자 호출.
// 결정한다. static binding.
delete static_cast<Derived *>(p);
}
*/
'C,C++ > Android_FrameWork' 카테고리의 다른 글
[SSM 안드로이드 프레임워크 개발 강의]26. RTTI , RTCI 직접 구현해보기 (0) | 2012.08.16 |
---|---|
[SSM 안드로이드 프레임워크 개발 강의]25. RTTI 이야기 (0) | 2012.08.16 |
[SSM 안드로이드 프레임워크 개발 강의]23. 가상함수의 원리와 함수포인터이해 (0) | 2012.08.16 |
[SSM 안드로이드 프레임워크 개발 강의]22. 범용적 함수 포인터와 bind (0) | 2012.08.15 |
[SSM 안드로이드 프레임워크 개발 강의]21. 인터페이스와 인터페이스 탄생 배경 (0) | 2012.08.15 |