C++ nyelvben ha couttal kiíratunk vagy cinnel bekérünk egy változó értékét, akkor történik imlicit típuskonverzió?
Nem kifejezetten. Amikor pl csinálsz egy ilyet:
int num;
std::cin >> num;
Akkor itt nem implicit konverzió történik, hanem egyszerűen definiálva van az operator int típussal:
istream& operator>> (int& val);
A << esetében ugyanez áll fenn.
Te magad is definiálhatsz saját implementációkat az operátorra, hogy egyedi adatszerkezetekkel tudd használni.
3: Szégyelld magad.
Amikor a konzolról bekérsz bármit, az char tipusú lesz. Számot te nem tudsz beírni, csak 0 és 9 közé eső karaktereket.
Ezt viszont a programnak int-té kell konvertálnia.
Ugyanez történik a kiírásnál is. Csak ott fordított a művelet, hiszen int-et kell char-rá konvertálni.
csak azert kerdeztem mert c#ban explicit konverzio kell hasonlo esetben
int a = Convert.ToInt32(Console. ReadLine());
#4 Az, hogy te mit írsz be a konzolon, nem lényeges, a mágia a >> operátorban van. Nem nevezném implicit konverziónak azt, hogy implementálva van a >> operátor int paraméterrel. Ahogy az első válaszban is írtam, van egy ilyen definiálva:
istream& operator>> (int& val);
Magyarán, ha egy input stream-ről (mint pl az std::cin) int típusra "olvasol be" adatot, akkor ez a jómadár fog meghívódni. Ebben van benne a konverziós logika. Ez nem implicit konverzió, a fordító nem "barkóbázik" a típusokkal, egyszerűen meghívódik a a >> operátor megfelelő implementációja aszerint, hogy milyen típusú változóba olvasol be. Ennyi.
"Ez nem implicit konverzió, a fordító nem "barkóbázik" a típusokkal, egyszerűen meghívódik "
De kedves tudatlan, ezt nevezik implicit tipuskonverziónak, a fordító pedig igenis barkóbázik típusokkal.
Hogy te ehhez láthatóan sugár hülye vagy, az más kérdés.
Vazz.
Két fajta konverziós lehetőség van.
Az egyik explicit, ez az. amikor meghívsz egy ValamiToMásvalami függvényt és a fordító a valami tipusból másvalami tipusra konvertál.
Ennek a műveletnek van implicit verziójais, amikor nem te hívod meg a konverziós függvényt, hanem az magától történik.
Ilyen eset az is, amikor valki konzolról bekér egy számot, ami int vagy float.
Tekintve, hogy direkt számokat nem tudsz bevinni a gépbe, csak a számokat reprezentáló karaktereket, például a 8-ast, 6-ost. így azokat át kell alakítani tényleges számokká. Na, ilyenkor a fordító elintézi, hogy neked ne kelljen ezzel az átalakítással foglalkoznod.
Ugyanennek ellentettje történik akkor amikor egy számot szeretnél kiiratni a konzolra. Ekkor a számsort karakterré konvertálja a géped, szintén implicit (tehát rejtett) módon.
Tehát, neked nem kell meghívnod a konverziós függvényt, az megtörténik a beavatkozásod nélkül.
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!