Mam pytanie - po co są konstruktory sparametryzowane? Po co się je używa? Wiem, jak je tworzyć, ale kompletnie nie mogę sobie ułożyć w głowie ich potrzeby.

- Rejestracja:ponad 4 lata
- Ostatnio:prawie 2 lata
- Postów:11
@Samhain: Zadaniem konstruktora jest poprawne skonstruowanie obiektu tak, żeby ten był gotowy do pracy przed jego użyciem. Niektóre typy danych muszą * przyjmować dane ze środowiska, żeby mieć sens - choćby taka klasa jak std::ifstream
, która stanowi abstrakcję do czytania plików. Konstruktor "sparametryzowany" przyjmie choćby ścieżkę do pliku (dana ze środowiska), aby poprawnie ten obiekt skonstruować (w tym przypadku nawet wykonać jakieś akcje - otworzyć plik [RAII]), żeby potem można było z tego obiektu korzystać (e.g. czytać z pliku operatorem >>
).
* dla rozjaśnienia - std::ifstream ma konstruktor domyślny, ale dużo nie podziałasz z domyślnie skonstruowanym ifstreamem

- Rejestracja:około 8 lat
- Ostatnio:około 9 godzin
- Postów:4935
Czytanki:)
https://cplusplus.com/

- Rejestracja:około 19 lat
- Ostatnio:6 dni
- Lokalizacja:Warszawa
- Postów:1454
Konstruktory takie na ogół służą do zrealizowania dependency injection, a w połączeniu z brakiem domyślnego konstruktora(czyli takiego bez parametrów) zabezpieczają programistę korzystającego z danego obiektu przez niepoprawnym/bezsensownym użyciem.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
ifstream ifs; ifs.open("c:\\temp\\data.txt");