- Yettel topik
- Android alkalmazások - szoftver kibeszélő topik
- Xiaomi 15T - reakció nélkül nincs egyensúly
- A Vivo S50 Pro mini is beáll a sorba
- Kicsomagoljuk és bemutatjuk a Poco F8 Ultrát
- Nothing Phone 2a - semmi nem drága
- Apple iPhone 17 Pro Max – fennsík
- Megtartotta Európában a 7500 mAh-t az Oppo
- Folytatást kap a legjobb méretű hajlítható
- Samsung Galaxy A54 - türelemjáték
Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
dobragab
#3062
üzenetére
Ezzel csak az a bajom, hogy ez a megoldás lényegében nem különbözik attól, hogy "kívül" megnyitod a fájlt, memória területet foglalsz, oda beolvasod a fájlt, majd ezt a memória területet átadod a D ctor.-ának. Tehát a fájl megnyitás, és a memória terület foglalás nem a D ctor-ában történik, viszont az erőforrás felszabadítást (legalábbis a fájl lezárást) a dtor-ban akarod megoldani. Ez egy felemás RAII lenne, ami szerintem koncepcionálisan hibás. Az, hogy ezt az egészet bele tetted egy statikus factory fv.-be, a lényegen nem változtat. Sőt az allokált memória terület már a factory fv. lefutásával felszabadulhat (bár itt mivel const & hivatkozás van rá, valószínűleg kitart annak élettartamáig. Egyébként a const & nekem nem lesz jó, mert változni fog a memória terület, amit az objektum "elhalásakor" vissza szeretnék írni a fájlba. nem const referencia pedig tudtommal nem tartja életben a temporális objektumot. Lehet hogy tévedek!). Ha közvetlenül a D ctor-ával hozod létre az objektumot, akkor a helyzet ugyanez. Tehát a statikus factory fv. használata semmit nem tesz jobbá, a zárójeles megjegyzésem értelmében még esetleg rosszabb is lehet.
Ellenben az én megoldásommal a D ctor-ába lehet tenni mind a fájl, mind pedig a blob allokálását, és ezáltal ezeket az erőforrásokat RAII módon lehet kezelni, ahogy "kell". Ennek az ára a B kétfázisú inicializálása, ami azért nem hibás koncepcionálisan, mert sem félig, sem teljesen konstruált B objektumot nem lehet létrehozni. Mindössze a D konstruálása során van olyan pont, amikor a D B része félig konstruált, de ekkor a D még kész sincs. A protected init fv.-t kell meghívni kötelezően a D ctor.-ában, ennek elmulasztása azonban nem különbözik attól, mintha "elfelejtenénk" D valamelyik tagját inicializálni (végül is az ős osztály is egy "tagnak tekinthető"). A tagok inicializálása pedig nem csak inicializációs listában, hanem a ctor törzsében is megtörténhet, pont akkor, ha az inicalizáláshoz számításokat kell végezni. A lényeg, hogy ezzel a módszerrel D-ből csak teljesen konstruált objektumot lehet létrehozni, B-ből pedig semilyet.
Ú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!
- Yettel topik
- Android alkalmazások - szoftver kibeszélő topik
- Autós topik
- Gaming notebook topik
- Régóta ott van a fiókban az Intel válasza az AMD-féle 3D V-Cache-re
- Spórolós topik
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Windows 11
- Tudományos Pandémia Klub
- Samsung kuponkunyeráló
- További aktív témák...
- Samsung Galaxy Z Flip7 Zsebbe csukható stílus, 120 Hz élmény 12/512 GB Használt, karcmentes
- Samsung Galaxy Z Fold7 Jetblack 12/256 GB Használt, karcmentes Garancia 2026. 10. 24-ig
- HP ProDesk 600 G5 i3-9100 16GB 512GB 1 év garancia
- HP ProDesk 600 G5 i3-9100 8GB 256GB 1 év garancia
- iKing.Hu Apple iPhone 17 Pro Deep Blue ProMotion 120 Hz újszerű 100% akku Apple garancia 202
- Fotó állvány eladó
- 2025.11.22 - Frissített Lenovo Gamer árlista (RTX 5090 / 4090 / 5080 / 4080 / 5070Ti / 4070 / 5060)
- Update 11.13. Dell Latitude Precision Üzleti gépek, 2-in-1 gépek, 3-13. gen.
- Lenovo T14S Thinkpad FHD IPS i5-1135G7 16GB RAM 256GB SSD Intel Iris XE Graphics Win11 Pro Garancia
- Honor X7D / 6/128GB / Kártyafüggetlen / 12Hó Garancia
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: Laptopműhely Bt.
Város: Budapest


