Aktywne Wpisy

GrzegorzPpoz +159
#!$%@? rzygam już tym portalem. Od kilku tygodni całe gorące permanentnie #!$%@? waleniem konia do rozliczeń pisowców albo podniecaniem się najpierw chadem kotłownią, a teraz tuskiem. To już nie jest portal ze śmiesznymi obrazkami tylko czysty propagandowy ściek. Dosłownie nie ma się nawet do czego uśmiechnąć na tej smutnej jak #!$%@? stronie. Serio wam się jeszcze nie przejadło czytanie kolejnego wpisu zaczynającego się od "gdyby nie tusk to błe błe błe węgry

adi0 +1019
źródło: Screenshot_20240118_190048
Pobierz




Czym to się różni i czego najlepiej używać?
struct Foo{
int bar = 3;
};
struct Foo{
int bar;
Foo() : bar(3) {}
};
struct Foo{
int bar;
Foo() { bar = 3; }
};
Pierwsza deklaracja inicjalizuje po prostu zmienną bar po utworzeniu już struktury.
W drugiej dochodzi do deklaracji zmiennej bar, a następnie utworzenie zagnieżdżonej struktury, dla której zmienna bar inicjalizowana jest poprzez listę inicjalizacyjną. Taka lista inicjalizuje zmienne PRZED przekazaniem sterowania do bloku instrukcji znajdujących się wewnątrz jakiejś klasy czy struktury. Dzięki temu
Trzeci nie jest initializacją, tylko zwykłym przypisaniem.
A co do pytania @zwei: sposób drugi jest najbardziej uniwersalny. Trzeci też jest poprawny - różnica jest taka, że nie zastosujesz go do składowej stałej (sprawdź: zmień int bar na const int bar). Pierwszy sposób odradzam - jest mało profesjonalny i możesz mieć problem z późniejszą modyfikacją, kiedy klasa / struktura się rozrośnie.