임시 개체
경우에 따라 컴파일러에 대 한 임시 개체를 만드는 데 필요한 됩니다.다음과 같은 이유로 이러한 임시 개체를 만들 수 있습니다.
초기화 하는 const 초기화 되 고 참조의 내부 형식에서 다른 형식 이니셜라이저를 참조 합니다.
사용자 정의 형식을 반환 하는 함수의 반환 값을 저장.이러한 이상은 프로그램 반환 값을 개체에 복사 하지 않습니다 경우에 생성 됩니다.예를 들면 다음과 같습니다.
UDT Func1(); // Declare a function that returns a user-defined // type. ... Func1(); // Call Func1, but discard return value. // A temporary object is created to store the return // value.
반환 값은 다른 개체에 복사 되지 않습니다 때문에 임시 개체가 생성 됩니다.이상은 작성 된 위치는 대부분의 경우 식 평가 하는 연산자 오버 로드 된 함수를 호출 해야 합니다입니다.이러한 오버 로드 된 연산자나 함수는 주로 다른 개체에 복사할 사용자 정의 형식을 반환 합니다.
다음 식을 참조 ComplexResult = Complex1 + Complex2 + Complex3.식 Complex1 + Complex2 계산 되 고 결과 임시 개체에 저장 됩니다.다음, 식 임시+ Complex3 평가 하는 결과를 복사 하 고 ComplexResult (가정 대입 연산자가 오버 않습니다 로드).
사용자 정의 형식 캐스팅의 결과 저장.지정 된 형식의 개체를 명시적으로 사용자 정의 형식으로 변환 되 면 새 개체를 임시 개체로 구성 됩니다.
임시 개체의 생성 및 파기 되는 시점에서 정의 된 수명이 있습니다.결국 하나 이상의 임시 개체를 만드는 식 하는 만든 역순으로 소멸 시킵니다.파괴에서 실시 하는 포인트는 다음 표에 나와 있습니다.
임시 개체에 대 한 파괴 점
만든 이유 임시 |
포인트 소멸 |
---|---|
식 계산 결과 |
식 계산 결과로 생성 되는 모든 이상은 식 문 끝에 삭제 됩니다 (즉, 세미콜론에), 또는 대 한 제어 식의 끝에 for, if, while, do, 및 switch 문. |
초기화 하는 const 참조 |
동일한 형식으로 초기화 되 고 참조는 l-value 이니셜라이저가 없으면 임시 내부 개체 형식 생성 되어 초기화 식으로 초기화 됩니다.Reference 개체가 바인딩되는 즉시 소멸 한 후에이 임시 개체가 소멸 됩니다. |