W tym kontekście
int a = int(); // 1)
to wartość inicjuje a
, tak, że posiada wartość 0
. Ta składnia nie wymaga obecności konstruktora dla wbudowanych typów, takich jak int
.
Należy pamiętać, że ta forma jest konieczna, ponieważ następujący jest analizowany jako deklaracji funkcji, raczej niż inicjalizacji:
int a(); // 2) function a() returns an int
w C++ 11 można osiągnąć inicjalizacji wartości z bardziej intuicyjnej składni:
int a{}; // 3)
Edit w tym konkretnym przypadku, nie ma korzyści z użyciem 1) lub 3) przez
int a = 0;
ale uważają
template <typename T>
void reset(T& in) { in = T(); }
następnie
int i = 42;
reset(i); // i = int()
Na marginesie, C++ 11, korzystnym sposobem di jest składnia 'int a {}'. – Fabien
@Fabien byłem w trakcie dodając, że :) – juanchopanza
Mam szczerą nadzieję, że 'int a = 0;' nie spadła z mody jeszcze. –