Class A

{

Public:

A() { AAAAA;}

A(a) { A(); }

}


위와 같이 호출을 하니 자꾸 소멸자가 호출되더라. 이유인 즉슨

A()와 같이 다른 생성자를 호출하면, 자신의 생성자 호출이 아니라 임시 객체를 만들어 생성자를 호출하고

해당 임시객체가 라인을 벗어나며 소멸되어 다시 소멸자가 호출 되더라.


그럼 어떻게 해야 하나?

다른 언어에서는

A(a) { this(); } 혹은

A(a) { this->A() } 와 같은 방법이 가능 하던데

C++에서는 허용 되지 않는 문법. 따라서


A() { init(); }

A(a) {init(); }

와 같이 별도의 초기화 함수를 두는 것이 좋겠다.

'개발 이야기 > VC++' 카테고리의 다른 글

strcpy_s함수와 strcpy함수  (0) 2013.11.19
[VC++] 컴파일시 "Error LNK 2019" 원인 및 해결  (0) 2013.08.14
Posted by Yann'
,