
//
// To jest przykładowy kod z podrozdziału 9.4.3 "Ukrywanie szczegółów" książki 
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

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

// Prosty typ Date.
// Gwarantuje inicjację za pomocą konstruktora.
// Wprowadza pewne udogodnienia notacyjne.
struct Date {
    int y, m, d;                // Rok, miesiąc, dzień
    Date(int y, int m, int d);  // Sprawdza poprawność daty i wykonuje inicjację.
    void add_day(int n);        // Zwiększa Date o n dni.
};

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

Date::Date(int y, int m, int d) : y(y), m(m), d(d) {}

int main()
{
    Date birthday(1960,12,31);  // 31 grudnia 1960
    ++birthday.d;               // Nieprawidłowa data!

    Date today(1970,2,3);
    today.m = 14;               // Nieprawidłowa data!
}

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