과제하다 급 궁금해서 짜봤습니다. 왜냐, 이거 잘못하면 메모리 누수를 걱정해야 할 것 같았거든요.
결과는 짤 한 장으로 대체합니다.
함수의 인자 중 참조자인 것에 생성해 넣으면 함수가 끝날 때 같이 파괴되는 모양입니다.
근데 하나 더 궁금해서 해봤는데요,
얘는 왜 이런대???? 읭??? 두 번 파괴돼???? 복사 생성했나???? 어???????
이유 고가 삽니다 이유 아시는 분들 좀 알려주세요... orz
는 복사 생성자가 호출되기 때문이었군요.
근데 더 혼동되는 거
?????????? 복사 생성자를 여러개 넣어보아도 똑같았어요. 아예 복사가 안 돼???? 최적화했나?????
최적화 끄고 해봐도 똑같네요.
최종 코드입니다. 과제가 바빠서 일단 여기까지만 해보렵니다.
#include <iostream> using namespace std; class MyDestroyTest{ private: int nameval = 0; public: MyDestroyTest() { cout << "Class Created : " << nameval << endl; } MyDestroyTest(const MyDestroyTest&) { cout << "Class Copyed : const MyDestroyTest&" << endl; } ~MyDestroyTest() { cout << "Class Destroyed : " << nameval << endl; } void method1() { cout << "method1 called" << endl; nameval = 10; } }; void paramFunction(MyDestroyTest d) { cout << "function started" << endl; d.method1(); cout << "function ended" << endl; } int main() { cout << "main started" << endl; cout << "function calling" << endl; paramFunction(MyDestroyTest()); cout << "function calling end" << endl; cout << "main ended" << endl; getchar(); return 0; }