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:


댓글 달기