본문 바로가기

자료

[C++] 함수의 인자에서 생성한 클래스는 언제 파괴되는가

과제하다 급 궁금해서 짜봤습니다. 왜냐, 이거 잘못하면 메모리 누수를 걱정해야 할 것 같았거든요.

결과는 짤 한 장으로 대체합니다.

함수의 인자 중 참조자인 것에 생성해 넣으면 함수가 끝날 때 같이 파괴되는 모양입니다.

근데 하나 더 궁금해서 해봤는데요,

얘는 왜 이런대???? 읭??? 두 번 파괴돼???? 복사 생성했나???? 어???????

이유 고가 삽니다 이유 아시는 분들 좀 알려주세요... 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;
}