Wszyscy zdajemy sobie sprawę, że wskaźnik (i inne typy POD) powinny zostać zainicjalizowane.
Pojawia się wtedy pytanie „kto powinien je zainicjować”.
Cóż, są zasadniczo dwie metody:
- Kompilator inicjuje je.
- Deweloper inicjuje je.
Załóżmy, że kompilator zainicjował dowolną zmienną, która nie została jawnie zainicjowana przez programistę. Następnie napotykamy sytuacje, w których inicjalizacja zmiennej była nietrywialna, a programista nie zrobił tego w punkcie deklaracji, że musiał wykonać jakąś operację, a następnie przypisać.
Mamy więc teraz sytuację, w której kompilator dodał do kodu dodatkową instrukcję, która inicjalizuje zmienną do wartości NULL, a następnie kod programisty jest dodawany w celu wykonania poprawnej inicjalizacji. Lub w innych warunkach zmienna potencjalnie nigdy nie jest używana. Wielu programistów C ++ w obu przypadkach wrzeszczałoby w obu przypadkach kosztem tej dodatkowej instrukcji.
Nie chodzi tylko o czas. Ale także przestrzeń. Istnieje wiele środowisk, w których oba zasoby są na wagę złota, a programiści też nie chcą się poddawać.
ALE : Możesz zasymulować efekt wymuszenia inicjalizacji. Większość kompilatorów ostrzeże Cię o niezainicjowanych zmiennych. Dlatego zawsze ustawiam poziom ostrzegawczy na najwyższym możliwym poziomie. Następnie powiedz kompilatorowi, aby traktował wszystkie ostrzeżenia jako błędy. W tych warunkach większość kompilatorów wygeneruje błąd dla zmiennych, które nie są zainicjowane, ale są używane, co uniemożliwi wygenerowanie kodu.