임시 개체

경우에 따라 컴파일러에 대 한 임시 개체를 만드는 데 필요한 됩니다.다음과 같은 이유로 이러한 임시 개체를 만들 수 있습니다.

  • 초기화 하는 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 개체가 바인딩되는 즉시 소멸 한 후에이 임시 개체가 소멸 됩니다.

참고 항목

참조

특수 멤버 함수 (C++)