doldori님 말씀이 맞다고 생각합니다.
덧붙이면 instance의 memory 점유 size가 같더라도 A, B가 파생관계가 없는 생면부지의 class라면, 소멸자가 단지 메모리를 해제하는 것만이 아닌 이상
다른 resource의 해제까지 생까버리는 맘아픈 상황이 일어나게 되지 않을까요?
예를 들면 handle이랄지...
--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)
A와 B의 관계는요? B->A인가요? A->B인가요?
A와 B의 관계는요? B->A인가요? A->B인가요?
--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)
delete b를 하면 ~B() 함수가 호출되니 문제가 있어 보입니다.
delete b를 하면 ~B() 함수가 호출되니 문제가 있어 보입니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
A가 B의 자식 클래스이고 B의 소멸자가 가상이면 문제 없고(캐스팅도 필
A가 B의 자식 클래스이고 B의 소멸자가 가상이면 문제 없고(캐스팅도 필요없음)
그렇지 않으면 문제가 됩니다.
[quote]sizeof(A) == sizeof(B) 라고 가정했을때
이것은 A와 B의 연관성이 없고 단지 같은 메모리 구조를 했다는 가정하에
C 스타일의 캐스팅을 했다고 본다면, 문제가 될것입니다.
같은 메모리를 가리키고 있고 그 공간을 해제했으니 문제가 되겠죠.
다른 각도에서 바로본다면 어떻게 될지 고수님들의 의견 바랍니다.
dynamic_cast<B*>(a) == 0 라면 문제가 될
dynamic_cast<B*>(a) == 0 라면 문제가 될 공산이 매우 큽니다.
뭐 전부 primitive type에 레이아웃이 완전히 동일하다면, 컴파일러가 생성해주는 scalar destructor가 동일할테니 문제가 안생길수도 있겠네요.
음. 이런것때문에 (B*) 즉 C-style casting을 하지 말라는 이야기가 나오나봅니다. :)
Crow's Maniacal World.
http://crowmania.cafe24.com
Let's be engineers!
doldori님 말씀이 맞다고 생각합니다.덧붙이면 instance의
doldori님 말씀이 맞다고 생각합니다.
덧붙이면 instance의 memory 점유 size가 같더라도 A, B가 파생관계가 없는 생면부지의 class라면, 소멸자가 단지 메모리를 해제하는 것만이 아닌 이상
다른 resource의 해제까지 생까버리는 맘아픈 상황이 일어나게 되지 않을까요?
예를 들면 handle이랄지...
--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)
^^
답변 감사드립니다.
제 경우에는 레이아웃이 동일하며 소멸자에서는 하는일이 없기때문에 문제가 없을것이라고 결론 지었습니다. :D
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
Re: ^^
잘못된 결론입니다.
----------------------------------------
http://moim.at
http://mkhq.co.kr
Re: delete 관련 질문
클래스 A, B의 관계는 무엇입니까?
어느 한쪽이 다른 한쪽에게 상속하는 관계입니까?
둘다 공통의 클래스로부터 상속받는 것입니까?
아니면 전혀 관계가 없습니까?
그밖에 다른 관계 입니까?
내 블로그: http://unipro.tistory.com
파괴자가 가상함수일경우에는 문제가 없을듯 해 보이는군요...혹시 그렇
파괴자가 가상함수일경우에는 문제가 없을듯 해 보이는군요...
혹시 그렇지 않다면. 어떠한 반론이 나올 수 있을지..
(이미 하나 짐작가는게 있긴 합니다만. 다른분들의 생각을 보고 싶군요..)
파괴자가 가상함수일경우에는 문제가 없을듯 해 보이는군요... 혹시 그
파괴자가 가상함수일경우에는 문제가 없을듯 해 보이는군요...
혹시 그렇지 않다면. 어떠한 반론이 나올 수 있을지..
(이미 하나 짐작가는게 있긴 합니다만. 다른분들의 생각을 보고 싶군요..)
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
포인터에 대한 케스팅이므로 상속관계가 아니라도 컴파일에러가 아닙니다.
포인터에 대한 케스팅이므로 상속관계가 아니라도 컴파일에러가 아닙니다.
댓글 달기