
//
// To jest przykładowy kod z podrozdziału 9.4.4 „Definiowanie funkcji składowych” książki 
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

//------------------------------------------------------------------------------

// Prosty typ Date (niektórzy wolą, aby szczegóły implementacyjne były na końcu).
class Date {
public:
    Date(int y, int m, int d); // Konstruktor: sprawdza, czy data jest poprawna, i wykonuje inicjację.
    void add_day(int n);       // Zwiększa Date o n dni.
    int month() { return m; }
    // ...
private:
    int y, m, d;               // Rok, miesiąc, dzień
};

//------------------------------------------------------------------------------

Date::Date(int yy, int mm, int dd) // Konstruktor
        :y(yy), m(mm), d(dd)       // Uwaga: inicjatory składowych.
{
}

//------------------------------------------------------------------------------

void Date::add_day(int n)
{ 
    // ...
}

//------------------------------------------------------------------------------

int main()
{
    {
        int x;              // Najpierw definicja zmiennej x.
        // ...
        x = 2;              // Później przypisanie do x.
    }

    {
        int x = 2;          // Definicja i natychmiastowa inicjacja zmiennej wartością 2.
    }

    {
        int x(2);           // Inicjacja x wartością 2.
    }

    Date sunday(2004,8,29); // Inicjacja sunday wartością (2004,8,29).

    sunday.add_day(7);      // Przeskakuje 7 dni.
    return sunday.month();  // Pobiera miesiąc niedzieli.
}

//------------------------------------------------------------------------------
