copy elision에 대해 질문이 있습니당
글쓴이: 으네이 / 작성시간: 월, 2017/10/23 - 11:55오전
#include <iostream> using namespace std; class Test { public: Test() { printf("디폴트\n"); } Test(const Test &) { printf("복사\n");} }; Test ree(Test T) { return T; } int main() { Test A = ree(Test()); }
이런식으로 진행이 돼는건가요?
1. main 함수의 ree(Test())에 의해 먼저 Test형 임시객체 한 개가 생성된다.
2. 그 후, ree 함수의 매게변수 ( Test T )에 대해 복사 생성자가 호출된다. ( main 함수 임시객체와 복사 )
3. 하지만 copy elision떄문에 복사 생성자가 만들어지지 않고 main함수에서 만들어진 임시객체에 이름을 할당한다.
4. 그 후, return T 문장을 만나면서 return 형 임시객체가 만들어짐과 동시에 복사 생성자를 호출한다. ( Test T와 복사 )
5. 함수가 끝난 후, main 함수의 Test A와 리턴형 임시객체에 대해 복사 생성자가 호출된다.
6. 하지만 copy elision떄문에 그냥 리턴형 임시객체에 A라는 이름을 할당한다.
이런식으로 진행이되는건가요? 그리고 copy elision에 대해 자세히 알 수 있는 방법은 없나요? 인터넷 검색도해보고
했는데 이해가 안가서요 ㅠㅠ 고수님들 도와주세용
Forums:
댓글 달기