Kezdőoldal » Számítástechnika » Programozás » Hogy hozok létre egy osztály...

Hogy hozok létre egy osztály objektumot switch case-ben, vagy if-ben?

Figyelt kérdés

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?



#C++ #osztály #objektumot
2016. márc. 10. 13:50
1 2
 11/20 anonim ***** válasza:
44%

#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.

[link]


É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.

2016. márc. 11. 09:54
Hasznos számodra ez a válasz?
 12/20 anonim ***** válasza:
35%

#11:


[link]

2016. márc. 11. 13:09
Hasznos számodra ez a válasz?
 13/20 anonim ***** válasza:
0%

"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.


[link]

2016. márc. 11. 17:18
Hasznos számodra ez a válasz?
 14/20 anonim ***** válasza:
42%

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

2016. márc. 11. 18:49
Hasznos számodra ez a válasz?
 15/20 anonim ***** válasza:
0%

Teljesen mindegy mennyire ellenkezel attól még nem lesz igazad.


[link]


"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;"

2016. márc. 11. 21:23
Hasznos számodra ez a válasz?
 16/20 anonim ***** válasza:

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:

[link]


És azt hiszem ezzel el is dőlt a kérdés. Egy élmény volt.

2016. márc. 11. 22:57
Hasznos számodra ez a válasz?
 17/20 anonim ***** válasza:
Azoknak meg külön gratulálok akik bedőltek neked és el is hitték hogy inicializálódnak a változók maguktól.. lol
2016. márc. 11. 23:02
Hasznos számodra ez a válasz?
 18/20 anonim ***** válasza:
Legfeljebb ha interjún ez lesz a kérdés nem veszik fel azokat akik hittek nekem :D
2016. márc. 12. 00:15
Hasznos számodra ez a válasz?
 19/20 anonim ***** válasza:

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

2016. márc. 12. 14:52
Hasznos számodra ez a válasz?
 20/20 anonim ***** válasza:
Igen, létrejön az objektum. A Java referenciákkal dolgozik, de a C++ nem. Ha nem az objektumot de egy objektumra mutató memóriacímet vagy referenciát akarsz, akkor azt külön kell jelezni. De észben kell tartani hogy a C++-ban nincsen GC, ezért ha dinamikusan foglalod le a memóriát az objektumnak úgy ahogy a Java csinálja, akkor azt fel is kell majd szabadítani manuálisan. Ez önmagában nem nehéz, akkor jönnek a gondok mikor repül egy meglepi kivétel ami megakadályozza az objektum felszabadítását, és memory leak keletkezik. Ez nagyobb projektekben nem elfogadható ezért a destruktoron kívül ritkán szabadítunk fel, nem is ajánlottam a kérdezőnek ezt az opciót.
2016. márc. 12. 16:11
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!