Często używamy struktur c ++ do definiowania struktury danych w przeciwieństwie do klasy, która może być kompletnym modułem z metodami składowymi. W głębi duszy wiemy, że oba są takie same (luźno mówiąc).
Fakt, że często używamy / traktujemy struktury jako jednostki tylko danych, powoduje, że nie dodajemy również domyślnych konstruktorów. Ale konstruktory są zawsze świetne, upraszczają i pomagają eliminować błędy.
Czy byłoby rozczarowanie, gdyby dodać domyślne konstruktory do moich struktur danych?
Czy implementacja domyślnego konstruktora powoduje, że struct Non-POD (zwykły stary typ danych), pod warunkiem spełnienia innych kryteriów?
Patrząc z perspektywy, rozważmy prosty przykład, ale w rzeczywistości struktura byłaby znacznie większa.
struct method
{
char name[32];
float temperature;
int duration;
};
Za każdym razem, gdy tworzę metodę, muszę się martwić (delikatnie mówiąc), czy zapomniałem ustawić jakąś wartość. Wyobraź sobie, że zapomniałem ustawić temperature
i zastosować metodę do systemu, który ma teraz losowo wysoką wartość i powoduje chaos. Lub zapomniałem ustawić, duration
a teraz metoda stosuje się przez nieznany długi czas.
Dlaczego powinienem brać odpowiedzialność za inicjalizację obiektu za każdym razem zamiast implementować jego konstruktor, który to gwarantuje?
struct
i class
jest to, że domyślnie prywatny, a drugi do publicznej wiadomości.