I have been stuck with a problem in C++ for several hours now, and I can't figure out what's going on, even with the help of the debugger.
I am trying to create a Date class which (no kidding) represents a date, with day, month and year. I also want to overload the main operator (++, --, +=, -=, +).
For a reason I cannot see, everything seems working fine, except the operator '+'.
Here is my header file:
#include <ostream>
class Date {
public:
    Date(int year, int month, int day);
    ~Date();
    Date(const Date& date);
    Date &operator+(int days);
private:
    int m_year;
    int m_month;
    int m_day;
    friend std::ostream &operator<<(std::ostream &os, const Date &date);
};
Here is my C++ file:
#include "Date.h"
using namespace std;
Date::Date(int year, int month, int day)
        : m_year(year),
          m_month(month),
          m_day(day)
{}
Date::~Date() {}
Date::Date(const Date &date)
    : m_year(date.m_year),
      m_month(date.m_month),
      m_day(date.m_day)
{}
ostream &operator<<(ostream &os, const Date &date) {
    os << date.m_day << ", " << date.m_month << " " << date.m_year;
    return os;                                                  <---- debug point A
}
Date &Date::operator+(int days) {
    Date newDate(*this);
    newDate.m_day = newDate.m_day + days;
    return newDate;                                             <---- debug point B
}
And my main file:
#include "Date.h"
#include <ostream>
using namespace std;
int main(int argc, char *argv[])
{
    Date date(2013, 12, 12);
    cout << date << endl;
    cout << date + 2 << endl;
    return 0;
}
And the output is:
12, 12 2013
1359440472, 12 2013
Process finished with exit code 0
I don't understand where does this 1359440472 comes from!!
I have tried to put debug point (as shown above), and the output is the following:
Debug point A:
    date = {const Date &} 
         m_year = {int} 2013
         m_month = {int} 12
         m_day = {int} 12
Debug point B:
    this = {Date * | 0x7fff5c5ddac0} 0x00007fff5c5ddac0
         m_year = {int} 2013
         m_month = {int} 12
         m_day = {int} 12
    days = {int} 2
    newDate = {Date} 
         m_year = {int} 2013
         m_month = {int} 12
         m_day = {int} 14
Debug point A:
    date = {const Date &} 
         m_year = {int} 2013
         m_month = {int} 12
         m_day = {int} 1549654616
I cannot explain that!! There is no step between the two last debug checkpoints, and "14" has become "1549654616"...
It could be a problem with the type int (as it seems to be not far from 2^24) or a problem with the operator +, but I don't see how to fix it.
Thanks you for your help, Ed
 
     
    