Ez miért van így? És pontosan mi is ez? Nem értem.
van egy függvény és benne egy lokális i változó:
return int(i); Egy int típust ad vissza.
Ezt jól tudom?Egyébként miért csak úgy jó hogy az i változót zárójelbe rakom?
És objektum esetében meg miért csak úgy jó,hogy a típust rakom zárójelbe?
return (cProba&)obj1;










Ez szinte egyértelműen C++, két okból: az adott szintaktikával ez a legelterjedtebb nyelv, és a kérdező stílusát ismerjük már, és tudjuk, hogy azt próbálja megtanulni.
Szóval.
return int(i);
Ez nem intet ad vissza, ez egy intből fogja a visszatérési értéket kialakítani. Ha a visszatérési érték egy long, akkor simán, gond nélkül kasztol, ha a visszatérési érték short, akkor esetleg warningol, hogy narrowing cast, ha a visszatérési érték egy osztály, aminek van egy egyparaméteres, nem explicit konstruktora, ami intet (vagy intből "könnyen" konvertálható) típust fogad, akkor gond nélkül konvertál, ha egy olyan típust akarsz visszaadni, ami intből nem hozható létre, akkor fordítási hibát kapsz.
Valamint ha i egy lokális változó, amiből nem lehet intet csinálni (olyan, nem beépített típus, ami nem rendelkezik operator int függvénnyel), akkor szintén fordítási hibát kapsz, hiszen nem tudsz belőle intet csinálni.
Amúgy így is működik: (int)i, ezt hívjuk C-típusú kasztolásnak, és nem javallott a használata.
A saját típusnál is működik a típus(xy); forma, csak a cProba&-re csinálni kell typedefet, mert a referencia miatt nem fogja érteni a fordító:
typedef cProba& cProbaRef;
return cProbaRef(obj1);
De ha nem referenciával akarod, akkor simán megy.
Értem.
És ez csak miért így jó?
return unsigned short(i); Az i egy unsigned short típus.Így rossz.
És így pedig jó: typedef unsigned short ushort;
return ushort(i);
Így szintaxis hiba:
unsigned short i_getAge(void)const{return unsigned short(*this->i_age);} //De miért?
És hogyha létrehozok egy szinonimát typedef-el az előjel nélküli típusra akkor meg jó.
unsigned short i_getAge(void)const{return ushort(*this->i_age);}
Ez miért van?





További kérdések:
Minden jog fenntartva © 2025, 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!