C++ ezen inicializációk közti különbség?
int a(10);
int b = (10);
int c = int(10);
int d{10};
int e = {10};
int f = int{10};
int a(10):
A konstruktort hívod egy const paraméterrel.
(gyakorlatilag legalább 1 általad definiált függvényhívás)
int b = (10);
A konstruktor hívod majd az értékadó operátort const paraméterrel. (gyakorlatilag legalább 2 általad definiált függvényhívás)
int c = int(10);
A konstruktort hívod majd egy jobb oldali érték konstruktorát, majd a bal oldali típus értékadó operatátorát a jobb oldali típusnak megfelelő paraméterrel. (gyakorlatilag legalább 3 általad definiált függvényhívás)
Ezek hasonló módon működnek csak c++11-es szabvány szerinti inicializáló listával:
int d{10};
int e = {10};
int f = int{10};
Aminek érdemes utána nézni: lvalue, rvalue, constructor, operator, overloading
Köszönöm a válaszokat.
Kiegészítésként annyi, hogy a C++11 -es inicializáció fordítás idejű hibát add, ha:
int -ben akarsz doublet tárolni
pl:
int a{1.0};
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!