Kezdőoldal » Számítástechnika » Programozás » C++ nyelvben ha couttal...

C++ nyelvben ha couttal kiíratunk vagy cinnel bekérünk egy változó értékét, akkor történik imlicit típuskonverzió?

Figyelt kérdés

2021. jún. 25. 06:59
1 2 3 4
 1/31 anonim ***** válasza:
64%

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.

2021. jún. 25. 10:39
Hasznos számodra ez a válasz?
 2/31 anonim ***** válasza:
23%
Igen, történik. Az egyes meg hülyeséget firkál.
2021. jún. 25. 16:27
Hasznos számodra ez a válasz?
 3/31 anonim ***** válasza:
#2 Érezd magadének a lehetőséget, hogy bizonyítsd az álláspontod.
2021. jún. 26. 14:25
Hasznos számodra ez a válasz?
 4/31 anonim ***** válasza:

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.

2021. jún. 26. 17:58
Hasznos számodra ez a válasz?
 5/31 anonim ***** válasza:
Igen, történik. Nincs igaza az elsőnek.
2021. jún. 26. 22:24
Hasznos számodra ez a válasz?
 6/31 A kérdező kommentje:

csak azert kerdeztem mert c#ban explicit konverzio kell hasonlo esetben

int a = Convert.ToInt32(Console. ReadLine());

2021. jún. 27. 17:57
 7/31 anonim ***** válasza:

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

2021. jún. 27. 23:14
Hasznos számodra ez a válasz?
 8/31 anonim ***** válasza:

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

2021. jún. 28. 02:49
Hasznos számodra ez a válasz?
 9/31 anonim ***** válasza:
Azt, hogy meghívsz egy osztályon egy operátort, nem hívják implicit típuskonverziónak. Ha egy tömböt pointerként próbálsz meg használni, az implicit típuskonverzió. Az implicit típuskonverzió pontosan azt jelenti, hogy egy adott T1 típusra nem létezik alkalmazható függvény, de a fordító át tudja alakítani olyan T2 típussá, amire igen. Ezek a típuskonverziók kontextustól függetlenül alkalmazhatók, tehát a programkód bármely pontján működnie kell. Mesélj nekem, mikor tudtál egy karakterláncot (merthogy a korábbi megjegyzésekkel szemben nem karakterből, hanem karakterláncból születik az a bizonyos integer érték) integer értékként kezelni? Megsúgom, soha, mert erre nem létezik implicit konverzió. Ami viszont létezik, az a istream::operator>> operátor egy olyan definíciója, amely egy int típusú referenciát kap paraméterként (értsd: jobboldali értéknek), és a konverziós logika (amely nem impicit konverzió) ezen belül van implementálva. Remélem felfogtad, ha nem, akkor részemről így maradsz, nem magyarázom el még egyszer.
2021. jún. 28. 03:56
Hasznos számodra ez a válasz?
 10/31 anonim ***** válasza:

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.

2021. jún. 28. 16:30
Hasznos számodra ez a válasz?
1 2 3 4

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!