Dtor bei push_back?



  • Abend,

    ich habe einen leeren Vektor std::vector<Adapter> adapters. Jetzt habe ich gerade verwundert festgestellt, dass beim 1. pushback in diesen Adapter der Destructor von Adapater aufgerufen wird.

    Kann mir einer sagen, wieso bei einem push_back der Dtor aufgerufen wird?? 😕



  • Weil im Vector eine Kopie landet und das Original vermutlich (sicher können wir es nicht wissen, da Du das verheimlichst) temporär war und zerstört wird.



  • Unwahrscheinlich, da std::vector (wie jeder andere STL Kontainer) Kopien speichert. Das, was da zerstört wird ist wahrscheinlich ein Temporärobjekt, was du an push_back weitergibst. Es liegt jedenfalls in Deiner Verantwortung.

    Ohne ein bissel Code kann man das aber schlecht diagnostizieren. Es hat wie gesagt nichts mit std::vector zu tun; denn der kopiert das Ding nur.

    Gruß,
    SP


Anmelden zum Antworten