Bocs, hogy megkérdem de nemsikerült megértenem google-s találatokkal azt, hogy az explicit kulcsszó mire jó?
2013. máj. 8. 02:53
1/5 iostream válasza:
"A szabványos C++ az explicit kulcsszót használja annak jelölésére, hogy egy konstruktor nem használható implicit konverzióra."
Azaz ha van egy X konstruktorod, ami egy darab T típust vesz át, akkor ahol X-re lenne szükség és T-t írsz oda, nem fog lefordulni.
Tehát:
class A
{
A(int);
explicit A(char);
};
void f(A);
int main()
{
f(5); //lefordul, mert int-ből A implicit konvertálódik
f('a'); //nem fordul, mert charból explicit nem lesz A
}
2/5 A kérdező kommentje:
Nem értem. :(
2013. máj. 8. 14:00
3/5 anonim válasza:
Jó magyar nyelven le van irva de elmagyarázom neked, az emberek szintjén xd. Például a példában, int-ből char konvertálodhat(implicit). De char-ból char nem ezért nem is fordul le.
4/5 iostream válasza:
Nem. intból A konvertálódhat, hiszen van egy olyan konstruktora, ami egy darab int paramétert vár. Ez implicit konverzió lesz, hiszen ha leírsz egy intet, és a környezet A-t vár, akkor elfogadja (lásd: lefordul a függvényhívás, A paramétert vár, de intet kap, a fordító csendben beilleszt egy A konstruktorhívást). Ha explicit a konstruktor, akkor nem fogja ezt megcsinálni, neked kell kézzel, explicit berakni a konstruktorhívást.
5/5 A kérdező kommentje:
Nem értem miről beszélsz(bocs,hogy buta vagyok hozzá tudom,hogy nem vagyok intelligens)Mi az az A amiről az iostream beszél?
Amit értek:
A példájában a konstruktor túl van terhelve egyik int et a másik chart vár de a char verziós az explicit.
Magyarázzátok el érthetőbben pls.
2013. máj. 9. 00:23
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!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!