게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C++ 생성자 소멸자 질문드립니다.
게시물ID : programmer_17376짧은주소 복사하기
작성자 : 삼정
추천 : 0
조회수 : 457회
댓글수 : 1개
등록시간 : 2016/05/25 23:03:09
옵션
  • 본인삭제금지
int main()

{
  AAA obj1;
AAA obj2(obj1);
obj2.ShowData();
AAA obj3(30);
obj3.ShowData();
FuncA(obj3);
AAA obj4;
obj4 = FuncB();
obj4.ShowData();

return 0;
}
void FuncA(AAA a)
{
cout << "I'm in FuncA" << endl;
a.ShowData();
}
AAA FuncB()
{
cout << "I'm in FuncB" << endl;
AAA a(10);
return a;
}

기본적인 함수들은 만들어 놓고 ShowData는 그냥 value값 넣고 확인하려고 넣었어요.

이 아래는 컴파일 결과와 제가 생각하는 생성자와 소멸자 위치인데요

인자 없는 생성자 AAA obj1;
복사 생성자   AAA obj1;
val:0
인자 있는 생성자 AAA obj3(30);
val:30
복사 생성자 FuncA(obj3); **1번질문
I'm in FuncA
val:30
소멸자 **1번질문?
인자 없는 생성자 AAA obj4;
I'm in FuncB
인자 있는 생성자 obj4 = FuncB(); ** 2번질문
복사 생성자
소멸자
소멸자
val:10
소멸자
소멸자
소멸자
소멸자

1번질문. FuncA(obj3)에서 복사 생성자가 일어났다는건 앞에값이 함수일때 변수를 class값을주면 복사생성자가 생성되는건가요?
2번질문. FuncB가 AAA값의 함수이므로 우선 함수 안으로 들어가서 a(10)이라는 인자있는 생성자를 만들고 이값을 리턴하면서 복사 생성자가
    쓰이고 그다음에 a(10)이 지역변수여서 사라져서 소멸자가 1번 실행되는거라 생각했는데 이부분에서 소멸자가 2번실행되네요.
한번은 어떤것 때문에 실행되는거죠?

꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호