{
mJcbRozm = IcbRozm; m_lcbKawałek = IcbKawałek * IcbRozm;
};
Użycie argumentów domyślnych jest ładnym sposobem na zmniejszenie liczby potrzebnych konstruktorów. We fragmencie „Przed” umożliwiamy użytkownikowi skonstruowanie klasy bez podania parametru, z jednym parametrem lub z dwoma parametrami. W tym celu utworzyliśmy trzy konstruktory.
Zauważmy jednak, że powstały przy tym aż trzy różne metody, które trzeba ze sobą koordynować. Jeśli zmienimy algorytm w jednej z nich, to musimy się upewnić się, że zmiana zostanie wprowadzona w pozostałych dwóch. (Oczywiście, moglibyśmy utworzyć jakąś centralną prywatną funkcję, której używałyby wszystkie trzy konstruktory. Moglibyśmy też zadeklarować stałe dla różnych wartości, aby zmniejszyć możliwość utraty synchronizacji w obrębie tych konstruktorów. Chcemy jednakże pokazać, że znamy lepsze rozwiązanie.)
We fragmencie „Po” użyliśmy argumentów domyślnych, aby zmniejszyć liczbę konstruktorów z trzech do jednego. Mamy mniej kodu i mniejsze prawdopodobieństwo wystąpienia błędów, a program staje się też bardziej elegancki i czytelny.
Zauważmy, że w rozwiązaniu z argumentami domyślnymi argumenty podawane przez użytkownika są przypisywane kolejnym zmiennym od lewej do prawej. Nie można nakazać kompilatorowi, aby w wypadku niezapewnienia wszystkich argumentów, wartość domyślną otrzymały wskazane argumenty, tak jak można to zrobić w języku VBScript.
Przykład: klasa Drgbase w pliku drg.h
pisanie czytelnego kodu
class Napis
private:
const int m_cchTest; int m_cch; char *m_pch;
void lnicjNapis(const char *pch, int cch); public: