Guest User

Untitled

a guest
Feb 18th, 2015
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. class Hack : public Object
  2. {
  3. public:
  4.     int x;
  5. };
  6.  
  7. //..
  8.  
  9. Object &getObject();
  10.  
  11. //...
  12.  
  13. {
  14.     //...
  15.     Object &o = getObject();
  16.     Hack *h = (Hack *) malloc(sizeof(Hack)); //выделяем память, чтобы никаких лишних конструкторов не вызвалось
  17.     memcpy(h, &o, sizeof(Object)); //копируем все из &o в h
  18.     free(&o); //
  19.     h->x = 1;
  20.     //теперь надо заставить o думать, что ее адрес сменился на h
  21.     //...
  22. }
  23.  
  24. {
  25.     //...
  26.     Hack *h = reinterpret_cast<Hack &>(&getObject());
  27.     delete h; //тут все окей, память удаляется как надо, ничего не портится, конструктор вызывается
  28.     //...
  29. }
Advertisement
Add Comment
Please, Sign In to add comment