Konstruktor typów podstawowych

Konstruktor typów podstawowych
mwl4
  • Rejestracja:około 12 lat
  • Ostatnio:13 dni
  • Lokalizacja:Wrocław
  • Postów:399
0

Cześć,
mam pytanie odnośnie jawnych konstruktorów typów podstawowych. W implementacjach często zamiast dokładnych wartości jest wywołany jawny konstruktor:

Kopiuj
int a = int();
int b = int{};
float c = float();
void *p = (void *){};

Oczywiście typ najczęściej nie jest określony (wygląda to +/- tak: template < typename _Ty > /* ... */ _Ty val = _Ty(), ale to nieistotne).
I tutaj się zaczyna pytanie. Czy standard określa, dokładnie jaką wartością jest zainicjalizowana zmienna danego typu? Czy to sprawa kompilatora, i lepiej nie ryzykować?


Asm/C/C++
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około godziny
  • Lokalizacja:Szczecin
5

Określa.

To zero-initialize an object or reference of type T means:
if T is a scalar type (3.9), the object is initialized to the value obtained by converting the integer literal 0 (zero) to T;


pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Kraków
  • Postów:1055
4

Dla scalar types (http://en.cppreference.com/w/cpp/types/is_scalar) "konstruktor domyślny" tworzy obiekt o wartości 0 (integer literal) zcastowanej do odpowiedniego typu.


do not code, write prose

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.