Move/copy constructor nélkül is működik, pedig egy std containerben tárolom?
Van egy osztályom, aminek a default copy ctr/assign-ját töröltem, nem definiáltam move ctr/assign-et, és nem is lehet implicit move-ja, mert definiáltam neki egy destruktort. (Cppreference szerint ebben az esetben nem lehet neki)
Egy std::vectorban tárolom, emplace-el helyezem el benne, így nem kellenek hozzáadáshoz copy/move konstruktorok.
De ezek a tárolók időben változó mérettel rendelkeznek, és ha nagyobb tároló kell, akkor a régiből át kell move-olni az újba az elemeket.
Ebből azt a következtetést vonom le, hogy kellene neki copy/move konstruktor.
De ahogy előbb leírtam: nincs neki. Mégis hibátlanul fut.
Vagy csak runtime dobna errort? Kipróbáltam 2 elem egymás utáni hozzáadásával, és ott se volt probléma. (Bár lehet hogy csak nem volt átméretezés valamilyen oknál fogva.)
Vagy a virtuális destruktor még engedélyezi az implicit move létrehozását?
Valaki magyarázza meg, hogy ez hogy lehet.
Előre is köszönöm!
Dobj fel kódot valahova, mert így nem teljesen világos mit csináltál pontosan.
Miként törölted pl a default copy-t?
Amúfy a növekedés nem lineáris a vectornál, simán lehet, hogy nem nőtt.
+ itt írnak pár érdekes infót a vector belső működéséről:
Most nem tudom felrakni, de tényleg semmiség. Van egy osztály, aminek törölve van a default copy & assign, van egy desktruktora, és ennek az osztálynak a példányait rakom be emplace()-el egy vectorba.
A(const A&) = delete;
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!