Új hozzászólás Aktív témák
-
jattila48
aktív tag
A http://nyelvek.inf.elte.hu/leirasok/C++0x/index.php?chapter=5 ELTE jegyzetben a move szemantikánál találtam az alábbi, szerintem hibás példát:
std::vector<int> && function() {
std::vector<int> ret; // ret feltöltése jó sok adattal
return ret;
}Azt akarja bemutatni, hogy hogy kell rvalue referenciát visszaadni, a költséges másolás elkerülése érdekében. Csakhogy a ret lokális változóra vonatkozó referenciát ad vissza, ami megszűnik visszatérés után. Ugyanígy lokális változóra vonatkozó lvalue referenciát, vagy pointert sem szabad visszaadni. Ha mindenképpen a move szemantikát akarja használni, akkor az
std::vector<int> function() {
std::vector<int> ret; // ret feltöltése jó sok adattal
return std::move(ret);
}lenne erre megfelelő. Még jobb, ha egyszerűen érték szerint adja vissza.
std::vector<int> function() {
std::vector<int> ret; // ret feltöltése jó sok adattal
ret;
}A modern fordítók RVO optimalizációt hajtanak végre (se copy, se move ctort nem hívnak), vagy ha ez nem lehetséges, akkor automatikusan a move szemantikát használják (a ret-et std::move nélkül is rvalue-nak tekintik, mert visszatérés után megszűnik). A return std::move(ret) elveszi az RVO optimalizáció lehetőségét, és a költségesebb move szemantikát alkalmazza, ezért ne használjuk. Azt azért furcsállom, hogy egy ilyen súlyos hiba benne maradhat egy ELTE jegyzetben. Egyébként általában is nagyon ritka esetben kell rvalue referenciát visszaadni. SOHA ne adj vissza lokális változóra vonatkozó pointert, lvalue vagy rvalue referenciát!!!
Vélemények?
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Milyen légkondit a lakásba?
- BestBuy topik
- PlayStation 5
- Dobozos formában is befutott az AMD 32 GB-os csúcs-Radeonja
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- LED világítás a lakásban
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Rezsicsökkentés, spórolás (fűtés, szigetelés, stb.)
- Sony MILC fényképezőgépcsalád
- exHWSW - Értünk mindenhez IS
- További aktív témák...
- KIVÉTELES áron eladó HP ZBOOK STUDIO 15 G7 WORKSTATION! 7-10850H/32GB/256 SSD/NVIDIA T2000 4GB/GARI
- A képek szerinti szép állapotban eladó DELL LATITUDE 5420 üzleti laptop garanciával 14", i5-11345G7,
- Samsung Galaxy Book PRO 2 /i7-1260P/16GB/512SSD/AMOLED/13.3/Intel Iris Xe/Gari
- Bomba áron eladó Asus Vivobook S433EA /i7-1165G7/16GB/512 GB SSD/FDHD/IPS
- Kihagyhatatlan áron DELL XPS 13 9310 /i5-1135G7/8 GB Ram/512 GB SSD/FHD+ IPS
- Samsung Galaxy Watch 6 Classic 47mm, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3316
- GYÖNYÖRŰ iPhone 13 mini 256GB Midnight -1 ÉV GARANCIA -Kártyafüggetlen, MS3622, 94% Akkumulátor
- Gamer PC-Számítógép! Csere-Beszámítás! R5 5500 / RTX 3060 12GB / 32GB DDR4 / 500GB SSD!
- Honor 90 /12/512GB / Kártyafüggetlen / 12Hó Garancia
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

