Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Poprawne definiowanie zmiennych =, () czy {}

Ostatnio zmodyfikowano 2016-04-06 16:59
Autor Wiadomość
9au5a
Temat założony przez niniejszego użytkownika
[C++] Poprawne definiowanie zmiennych =, () czy {}
» 2016-04-06 12:29:53
Witam,
niedawno (przedwczoraj :D) zaczęłam studia informatyczne i jak to wiadomo na początku same podstawy i wprowadzenie do tematu (c++). Jako ze ucze sie c++'a już od jakiegoś czasu to te podstawy w miarę dobrze ogarniam (a przynajmniej tak myślałam/ślę). Otóż we wszystkich kursach czy książkach jakie czytałam definiowanie zmiennej wykonywało sie za pomoca znaku "=" (ew.nawiasy okrągłe "()"), tyle że moj prof używał w programach za każdym razem klamer ("int zmienna {15001}"). Zapytałam się czy można mimo tego używać "="...Nie. Czemu? Bo to nie poprawne? Cos takiego. Postanowiłam poszukać w internecie, jednak zbyt wiele niestety nie znalazłam... Być może ktoś z was jest w stanie pomóc mi rozwiązać tę jakże ogromną dla mnie zagadke, czemu {} a nie = ?? ;)
P-147010
Monika90
» 2016-04-06 12:58:24
Kilka lat temu wprowadzono do C++ tak zwaną jednolitą inicjalizację, chodziło o to żeby zastąpić różnorodność form inicjalizacji jedną uniwersalną składnią, np. zamiast pisać tak
C/C++
int x = 0;
int y( 0 );
Date d( 2016, 4, 6 ); //klasa z konstruktorem
X z = { 1, 2, 3 }; //struktura bez konstruktora
int a[ 5 ] = { 0, 1, 2, 3, 4 };

teraz można nowy sposobem, czyli tak:
C/C++
int x { 0 };
int y { 0 };
Date d { 2016, 4, 6 };
X z { 1, 2, 3 };
int a[ 5 ] { 0, 1, 2, 3, 4 };

jednak stary sposób wciąż działa i jest poprawny.

Jeżeli twój nauczyciel uczy nowego sposobu, to dobrze, używaj nowego sposobu i się nie przejmuj. Jednak w większości kodu spotkasz się ze starym sposobem inicjalizacji, jeżeli nowy sposób ma wyprzeć stary to zajmie to długie lata, zwłaszcza że między tymi sposobami są pewne subtelne różnice i nie zawsze da się zastąpić () za pomocą {}.

C++ Core Guidelines zalecają używanie {}
https://github.com/isocpp​/CppCoreGuidelines/blob/master​/CppCoreGuidelines.md#es23-prefer-the--initializer-syntax
P-147013
9au5a
Temat założony przez niniejszego użytkownika
» 2016-04-06 16:59:24
I wszystko jasne :) Dziękuje za odpowiedź!  :)
P-147024
« 1 »
  Strona 1 z 1