Hirdetés
- Fejhallgató erősítő és DAC topik
- Vezeték nélküli fülhallgatók
- OLED TV topic
- Most Kína tiltotta ki a nemrég exportengedélyt kapott AI gyorsítókat?
- HiMedia lejátszók
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Autóhifi
- Amlogic S905, S912 processzoros készülékek
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
Ú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!
- Autós topik látogatók beszélgetős, offolós topikja
- A fociról könnyedén, egy baráti társaságban
- Fejhallgató erősítő és DAC topik
- Vezeték nélküli fülhallgatók
- Google Pixel 10 Pro XL – tíz kicsi Pixel
- Elektromos autók - motorok
- OLED TV topic
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- PROHARDVER! feedback: bugok, problémák, ötletek
- Most Kína tiltotta ki a nemrég exportengedélyt kapott AI gyorsítókat?
- További aktív témák...
- új, bontatlan Kingston FURY Impact 32 GB KIT DDR4L-3200 SoDIMM CL20-22-22 memória / kisker garancia
- Asztali PC , i5 10400F , RX 6600 XT , 16GB DDR4 , 512GB NVME
- Bomba ár! Fujitsu H760 - i7-6820HQ I 32GB I 500SSD I 15,6" FHD I Nvidia 4GB I Cam I W10 I Garancia!
- LG 32" ívelt Monitor 32MR50C-B
- Bomba ár! HP EliteBook 840 G8 - i5-1145G7 I 8GB I 256GB SSD I HDMI I 14" FHD I Cam I W11 I Gari!
- 13-14" Új és használt laptopok , üzletitől a gamerig , kedvező áron. Garanciával !
- Azonnali kézbesítés az év bármely pillanatában
- 122 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 - 4 év garancia (ELKELT)
- Telefon szerviz helyben - Gyors javítás, akár 30 perc alatt!
- HIBÁTLAN iPhone 13 mini 128GB Starlight -1 ÉV GARANCIA - Kártyafüggetlen, MS3288
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest