The compiler ignores the access specifier of friend functions. However, you should declare them as public to make the code readable:
bool operator ==( const Date & d1, const Date& d2); class Date{ private: int day, month, year; public: friend bool operator ==( const Date & d1, const Date& d2); };