// ********** MementoDemo.cpp ********** #include #include using namespace std; class Memento { private: int i; int j; public: Memento(int i, int j) { this->i = i; this->j = j; } int geti(){ return i; } int getj(){ return i; } }; class Originator { private: int i; int j; public: Originator(int i, int j) { this->i = i; this->j = j; } Memento* checkPoint() { return new Memento(i,j); } void rollBack(Memento* m) { i = m->geti(); j = m->getj(); } void incrementi() { i++; } void incrementj() { j++; } }; const int MAX = 1000; class Caretaker { public: Caretaker (int initial) { Originator* orig = new Originator(initial, initial); for (int i=0; iincrementi(); orig->incrementj(); orig->incrementj(); Memento* m = orig->checkPoint(); orig->incrementj(); orig->rollBack(m); } } }; int main() { hrtime_t t1 = gethrtime(); for (int i=0; i