Aktualizuję klasę do C++ 14 i próbuję znaleźć najprostszy sposób zainicjowania wszystkich zmiennych instancji na zero w konstrukcji. Oto co mam do tej pory:Czy domyślny konstruktor domyślny inicjuje zmienne do zera?
class MyClass {
public:
int var;
float* ptr;
double array[3];
MyStruct data;
unique_ptr<MyStruct> smart_ptr;
MyClass() = default;
~MyClass() = default;
}
Czy ustawienia konstruktora do default
równowartość robi:
MyClass() : var{}, ptr{}, array{}, data{}, smart_ptr{} {}
... czy trzeba init każdej zmiennej? (. Próbowałem zarówno w Visual Studio i mam zerami tak czy inaczej, ale nie jestem pewien, czy to szczęście czy nie)
mam Instancing klasę bez nawiasów: MyClass obj;
Człowieku, zamierzałem dać ci zadowoloną odpowiedź, ale teraz nie jestem pewien. Zobacz także http://stackoverflow.com/questions/2417065/does-the-default-constructor-initialize-built-in-types – Mikhail
Hahah :) Wiem, prawda! Właściwie to widziałem, ale to był naprawdę ten komentarz, który sprawił, że poczułem niepewność: http://stackoverflow.com/questions/2417065/does-default-constructor-initialize-built-in-types#comment36188015_2418195. Więc zeruje się, jeśli w ogóle nie masz konstruktora i wywołujesz 'instancję MyClass()' za pomocą nawiasów? : | –
Logicznie, domyślnym ustawieniem konstruktora na "default" będzie inicjowanie członków. Inicjalizacja domyślna nie zawsze jest równoważna inicjalizacji zerowej. – Peter