Hogy hozok létre egy osztály objektumot switch case-ben, vagy if-ben?
AZT szeretném, hogy egy osztály objektumot akkor jöjjön létre, ha teljesül egy feltétel, de NE szünjön még, ha vége as elágazáznak. C++
Pl class osztály{.….}
osztály objektum1; ez a normál példányosítás. Hogy van ez egy elágazásban, úgy hogy NE lokális legyen?
#9: Abban amit #7 és #8 ír van igazság, de amit te ideírtál az hatalmas baromság. Az alap fogalmakkal legyél már tisztában:
int a; //ez egy inicializálatlan változó
a = 5; //amit most inicializáltuk
A deklaráció nem inicializálás.
És ilyen szempontból #8-nak teljesen igaza van, az már más kérdés hogy a szabvány az objektumot inicializáltnak tekinti ha meghívódik a konstruktor még akkor is ha a tagváltozói nem azok, de mi tudjuk hogy a tagváltozók nem lettek inicializálva még és azt később tesszük meg.
"int a; //ez egy inicializálatlan változó"
Rakd ki globális névtérbe, és 0-ra lesz inicializálva.
De itt a standard, 8.5-ös pont, minden le van írva, felesleges mondogatni egymásnak mi az és mi nem, le van írva és a fordítókat az alapján implementálják, ami nem úgy van az bug/nem standard kiegészítés.
WTF? Az emberek még mindig erről vitatkoznak itt? Vicces. Azt nem lehet felfogni hogy nincs köze a kéréshez és azt sem hogy a tagváltozók inicializálatlanok maradnak? Idézd már be a szabványból hogy hol van hogy a konstruktor inicializálja a tagváltozókat? Nincs ilyen. A tagváltozók inicializálatlanok maradnak, akár hogy nézed a szabványt.
#10-es hol látod a linkelt oldalon hogy a hogy skalár tagváltozók inicializálódnak valami default értékkel konstruktor meghívásakor?? Na és milyen értéket kapnak?
#11-es kösz hogy belinkelted a szabványt akkor most el is olvashatnád. Hol látod hogy a tagváltozók inicializálásra kerülnek? Én nem látom.
Emberek ne nevettessetek már csak kijavítottam a kettest és itt osztja a baromságot a nép az inicializálásról aminek semmi a köze az egészhez. Az eszem megáll. Hát szálljatok már le a témáról nem érdekel hogy hogyan használjátok az inicializálás szót és azt hiszem senki mást sem. Globális és statikus változó 0-ra inicializálódik? Gratulálok hogy észrevetted. Mik köze ezeknek az objektumhoz? Az egyik nem lehet tagváltozó a másik meg osztályszintű és független az objektumtól. Kérsz egy biksisimit vagy mit akarsz? LOL
Teljesen mindegy mennyire ellenkezel attól még nem lesz igazad.
"if T is a (possibly cv-qualified) non-union class type, each non-static data member and each base-class
subobject is zero-initialized and padding is initialized to zero bits;"
Ezt azért nem gondoltad komolyan ugye? El is olvastad az egész mondatot vagy csak úgy kivágod a felét? Segítek. Ez van odaírva:
To zero-initialize an object or reference of type T means if T is a (possibly cv-qualified) non-union class type, each non-static data member and each base-class subobject is zero-initialized and padding is initialized to zero bits.
Ugye így már egy kicsit mást jelent? Azt hiszen nem olyan meglepő hogy most futtattam le a programot GCC-n és a kimenet -1434841938 lett... Én legalább is én nem lepődtem meg rajta. Úgy tűnik mégis csak memóriaszemét volt azokban a fránya változókban és még sem lettek inicializálva akárhogy is próbáltad bizonygatni hogy igen. Nem igazán tudom most már hogy az inicializálás szó jelentése nem világos vagy a szabvány nyelvezete zavart téged össze?
De mutatok neked egy igen vicces dolgot:
És azt hiszem ezzel el is dőlt a kérdés. Egy élmény volt.
osztály objektum1; // #1
objektum1 = osztály(1, "foo"); // #2
nem vágom a c++-t, csak a java-t, ezért kicsit meglepődtem ezen. #1-nél már létrejön az objektum? ugye én javában ahhoz szoktam hozzá, hogy csak egy referenciaváltozónak foglalunk olyankor helyet, és a példányosítás csak a #2 sorban jön létre a new kulcsszó után. a c++-ban máshogy működik? :O
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!