fork download
  1. // file: date.h
  2. #include <cstdio>
  3.  
  4. class date
  5. {
  6. friend bool operator<(date d1, date d2);
  7. public:
  8. // constructor
  9. date(int y=2015, int m=1, int d=1) : year(y), month(m), day(d) { }
  10. // explicit constructor
  11. explicit date(const char *s);
  12. private:
  13. int year;
  14. int month;
  15. int day;
  16. };
  17.  
  18. // question: use member or global operators?
  19. bool operator<(date d1, date d2);
  20. inline bool operator==(date d1, date d2) { return !(d1<d2 || d2<d1); }
  21. inline bool operator!=(date d1, date d2) { return d1<d2 || d2<d1; }
  22. inline bool operator<=(date d1, date d2) { return !(d2<d1); }
  23. inline bool operator>=(date d1, date d2) { return !(d1<d2); }
  24. inline bool operator>(date d1, date d2) { return d2<d1; }
  25.  
  26.  
  27. // file: date.cpp
  28. date:: date(const char *s)
  29. {
  30. sscanf(s, "%d.%d.%d", &year, &month, &day);
  31. }
  32.  
  33. bool operator<(date d1, date d2)
  34. {
  35. return d1.year < d2.year || d1.month < d2.month || d1.day < d2.day;
  36. }
  37.  
  38.  
  39. // file: main.cpp
  40. int main()
  41. {
  42. date *p = new date;
  43. date *q = new date(*p);
  44. date *s = new date[10];
  45.  
  46. delete p;
  47. delete p; // undefined behaviour
  48. delete s; // undefined behaviour
  49. }
Runtime error #stdin #stdout #stderr 0s 3272KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
*** Error in `./prog': double free or corruption (fasttop): 0x08c28008 ***