[C++] Poprawne definiowanie zmiennych =, () czy {}
Ostatnio zmodyfikowano 2016-04-06 16:59
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 = ?? ;) |
|
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 int x = 0; int y( 0 ); Date d( 2016, 4, 6 ); X z = { 1, 2, 3 }; int a[ 5 ] = { 0, 1, 2, 3, 4 };
teraz można nowy sposobem, czyli tak: 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 |
|
9au5a Temat założony przez niniejszego użytkownika |
» 2016-04-06 16:59:24 I wszystko jasne :) Dziękuje za odpowiedź! :) |
|
« 1 » |