Udostępnij za pośrednictwem


Obiektów tymczasowych.

W niektórych przypadkach jest konieczne dla kompilatora do tworzenia tymczasowych obiektów.Te tymczasowe obiekty mogą być tworzone z następujących powodów:

  • Aby zainicjować const odniesienia z inicjatora o typie innym niż podstawowy typ odwołania, inicjowany.

  • Aby zapisać wartość zwracaną przez funkcję, która zwraca typ zdefiniowany przez użytkownika.Temporaries te są tworzone tylko wtedy, gdy program nie kopiuje wartość zwracana do obiektu.Na przykład:

    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.
    

    Ponieważ zwracana wartość nie zostanie skopiowana na inny obiekt, jest tworzony tymczasowy obiekt.Częściej występującym przypadku, gdy temporaries są tworzone jest w trakcie oceny wyrażenia, gdzie funkcje Przeciążony operator musi zostać wywołana.Te funkcje Przeciążony operator zwraca typ zdefiniowany przez użytkownika, często nie są kopiowane do innego obiektu.

    Należy wziąć pod uwagę wyrażenie ComplexResult = Complex1 + Complex2 + Complex3.Wyrażenie Complex1 + Complex2 jest oceniane, a wynik jest przechowywany w tymczasowy obiekt.Dalej, wyrażenie tymczasowe+ Complex3 jest oceniane, a wynik jest kopiowany do ComplexResult (przy założeniu operatorem przypisania nie jest przeciążony). 

  • Aby przechowywać wynik cast typ zdefiniowany przez użytkownika.Gdy obiektu danego typu jest jawnie konwertowany na typ zdefiniowany przez użytkownika, że nowy obiekt jest zbudowany jako tymczasowy obiekt.

Tymczasowe obiekty mają okres istnienia klucza jest definiowana przez ich punkt tworzenia i punkt, w którym są niszczone.Dowolne wyrażenie, którego tworzy więcej niż jeden obiekt tymczasowych, ostatecznie niszczy je w odwrotnej kolejności, w którym zostały utworzone.Punkty, w których występuje zniszczenia przedstawiono w poniższej tabeli.

Zniszczenie punktów dla obiektów tymczasowych.

Przyczyna tymczasowe utworzone

Punkt zniszczenia

Wynik wyrażenia

Temporaries wszystkie utworzone w wyniku wyrażenia są niszczone na końcu instrukcji wyrażenia (oznacza to, że na średnik), lub na końcu kontrolującego wyrażenia dla for, if, while, do, i switch instrukcji.

Inicjowanie const odniesienia

Jeśli inicjatora nie jest wartością l tego samego typu, jako punkt odniesienia, inicjowany, tymczasowy typ podstawowy obiekt utworzony i zainicjowana z wyrażeniem inicjowania.Ten tymczasowy obiekt jest niszczony, natychmiast po niszczony jest obiekt odniesienia, z którą jest powiązany.

Zobacz też

Informacje

Specjalne funkcje składowe (C++)