194 Godzina 13
P: Dlaczego wymyślono wartości domyślne skoro można przeciążać funkcje?
O: Łatwiej jest zrozumieć jedną funkcję niż dwie. Łatwiej jest również analizować jedną funkcję z określonymi wartościami domyślnymi niż dwie różne funkcje. Dodatkowo, częstym źródłem błędów przy modyfikacji programu, jest przypadkowe pominięcie jednej z przeciążonych funkcji.
P: No to skoro jest tyle problemów z przeciążanymi funkcjami, to dlaczego zawsze nie wykorzystywać wartości domyślnych?
O: Przeciążanie funkcji daje możliwości nieosiągalne w przypadku wartości domyślnych, takie jak np. możliwość różnicowania listy parametrów np. pod względem typu, a nie tylko pod względem wartości.
P: Co umieszczać w części inicjalizującej, a co w treści konstruktora?
O: Reguła jest prosta. Wszystko co się da umieścić w części inicjalizującej należy tam umieścić (w szczególności inicjalizację wszystkich zmiennych wewnętrznych). Niektóre operacje, takie jak obliczenia, wypisywanie tekstów itp. trzeba umieścić w treści konstruktora.
P: Czy można przeciążać funkcje posiadające parametry domyślne?
O: Tak. Nie ma powodu, dla którego nie można by łączyć tych dwóch potężnych narzędzi. Jedna lub więcej z przeciążonych funkcji może mieć określone domyślne wartości parametrów według ogólnie przyjętych dla wartości domyślnych zasad.
P: Dlaczego wymyślono wartości domyślne skoro można przeciążać funkcje?
O: Łatwiej jest zrozumieć jedną funkcję niż dwie. Łatwiej jest również analizować jedną funkcję z określonymi wartościami domyślnymi niż dwie różne funkcje. Dodatkowo, częstym źródłem błędów przy modyfikacji programu, jest przypadkowe pominięcie jednej z przeciążonych funkcji.
P: No to skoro jest tyle problemów z przeciążanymi funkcjami, to dlaczego zawsze nie wykorzystywać wartości domyślnych?
O: Przeciążanie funkcji daje możliwości nieosiągalne w przypadku wartości domyślnych, takie jak np. możliwość różnicowania listy parametrów np. pod względem typu, a nie tylko pod względem wartości.
P: Co umieszczać w części inicjalizującej, a co w treści konstruktora?
O: Reguła jest prosta. Wszystko co się da umieścić w części inicjalizującej należy tam umieścić (w szczególności inicjalizację wszystkich zmiennych wewnętrznych). Niektóre operacje, takie jak obliczenia, wypisywanie tekstów itp. trzeba umieścić w treści konstruktora.
P: Czy można przeciążać funkcje posiadające parametry domyślne?
O: Tak. Nie ma powodu, dla którego nie można by łączyć tych dwóch potężnych narzędzi. Jedna lub więcej z przeciążonych funkcji może mieć określone domyślne wartości parametrów według ogólnie przyjętych dla wartości domyślnych zasad.