만약에 vector 를 반환하는 함수 f()가 있어
그러면 vector x = f(); 라고 쓰면 자동으로 이동대입연산자 (그니까 operator=(vector&&))이 호출되서 O(1)에 실행됨?
그리고 vector &&x = f(); 라고 하는거랑은 뭐가다름?
만약에 vector 를 반환하는 함수 f()가 있어
그러면 vector x = f(); 라고 쓰면 자동으로 이동대입연산자 (그니까 operator=(vector&&))이 호출되서 O(1)에 실행됨?
그리고 vector &&x = f(); 라고 하는거랑은 뭐가다름?
1. 착각하고 있는게 있는데 변수 선언의 초기값이 = 라 해서 대입 연산자의 호출이 아님, 생성자임 2. 둘이 같다고 봐도 됨. 어차피 전자는 RVO적용 -> 비용 0,후자는 임시 객체에 대한 참조라 비용 0