Zmienne prywatne są sposobem na ukrycie złożoności i szczegółów implementacji dla użytkownika klasy. Jest to dość fajna funkcja. Ale nie rozumiem, dlaczego w c ++ musimy umieścić je w nagłówku klasy. Widzę dwie irytujące wady tego:
- Zaśmieca nagłówek użytkownika
- Wymusza ponowną kompilację wszystkich bibliotek klienckich przy każdej modyfikacji elementów wewnętrznych
Czy istnieje uzasadnienie koncepcyjne tego wymogu? Czy to tylko po to, aby ułatwić pracę kompilatorowi?
struct foo{};
) jest niedozwolony, ale deklaracje forward ( struct foo;
) są.