<div>int main()</div> <div><br></div> <div>{</div> <div> <span class="Apple-tab-span" style="white-space:pre;"> </span>AAA obj1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>AAA obj2(obj1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>obj2.ShowData();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>AAA obj3(30);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>obj3.ShowData();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>FuncA(obj3);</div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">AAA obj4;</span><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>obj4 = FuncB();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>obj4.ShowData();</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div> <div> <div>void FuncA(AAA a)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>cout << "I'm in FuncA" << endl;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>a.ShowData();</div> <div>}</div> <div>AAA FuncB()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>cout << "I'm in FuncB" << endl;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>AAA a(10);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return a;</div> <div>}<span class="Apple-tab-span" style="white-space:pre;"> </span></div></div> <div><br></div> <div> <div>기본적인 함수들은 만들어 놓고 ShowData는 그냥 value값 넣고 확인하려고 넣었어요.</div> <div> <div><br></div> <div>이 아래는 컴파일 결과와 제가 생각하는 생성자와 소멸자 위치인데요</div> <div><br></div> <div>인자 없는 생성자<span class="Apple-tab-span" style="white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">AAA obj1;</span></div> <div>복사 생성자<span class="Apple-tab-span" style="white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;"> </span><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">AAA obj1;</span></div> <div>val:0</div> <div>인자 있는 생성자<span class="Apple-tab-span" style="white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">AAA obj3(30);</span></div> <div>val:30</div> <div>복사 생성자<span class="Apple-tab-span" style="white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">FuncA(obj3);<span class="Apple-tab-span" style="white-space:pre;"> </span>**1번질문</span></div> <div>I'm in FuncA</div> <div>val:30</div> <div>소멸자<span class="Apple-tab-span" style="white-space:pre;"> </span>**1번질문?</div> <div>인자 없는 생성자<span class="Apple-tab-span" style="white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">AAA obj4;</span><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span></div> <div>I'm in FuncB</div> <div>인자 있는 생성자<span class="Apple-tab-span" style="white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">obj4 = FuncB(); ** 2번질문</span></div> <div>복사 생성자</div> <div>소멸자</div> <div>소멸자</div> <div>val:10</div> <div>소멸자</div> <div>소멸자</div> <div>소멸자</div> <div>소멸자</div></div> <div><br></div> <div>1번질문. FuncA(obj3)에서 복사 생성자가 일어났다는건 앞에값이 함수일때 변수를 class값을주면 복사생성자가 생성되는건가요?</div> <div>2번질문. FuncB가 AAA값의 함수이므로 우선 함수 안으로 들어가서 a(10)이라는 인자있는 생성자를 만들고 이값을 리턴하면서 복사 생성자가</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> 쓰이고 그다음에 a(10)이 지역변수여서 사라져서 소멸자가 1번 실행되는거라 생각했는데 이부분에서 소멸자가 2번실행되네요.</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>한번은 어떤것 때문에 실행되는거죠?</div> <div><br></div> <div></div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.