Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. typedef int A;
  4. typedef int B;
  5. typedef int C;
  6.  
  7. class OptimisedT {
  8. public:
  9.  
  10.         OptimisedT(A* a,B* b, C* c): referencesLocals_(true), local1(a), local2(b), local3(c) { }
  11.  
  12.         /*
  13.         OptimisedT(Normal, Ctor, Stuff): referencesLocals_(false) {
  14.                 local1 = new A;
  15.                 local2 = new B;
  16.                 local3 = new C;
  17.         }
  18.         */
  19.  
  20.         OptimisedT(const OptimisedT& from): referencesLocals_(false) {
  21.                 local1 = new A(*from.local1);
  22.                 local2 = new B(*from.local2);
  23.                 local3 = new C(*from.local3);
  24.         }
  25.  
  26.         /*usual stuff*/
  27.         /*
  28.         WHATEVER doStuff() {
  29.                 return local1->doStuff(local2,local3);
  30.         }
  31.         */
  32.  
  33.         bool referencesLocals() {
  34.                 return referencesLocals_;
  35.         }
  36.  
  37.         ~OptimisedT() {
  38.                 if(!referencesLocals_) {
  39.                         delete local1;
  40.                         delete local2;
  41.                         delete local3;
  42.                 }
  43.         }
  44. private:
  45.         bool referencesLocals_;
  46.         A* local1;
  47.         B* local2;
  48.         C* local3;
  49. };
  50.  
  51.  
  52. OptimisedT ret()
  53. {
  54.         A a = 3;
  55.         B b = 4;
  56.         C c = 5;
  57.         OptimisedT r(&a, &b, &c);
  58.         std::cout << r.referencesLocals() << std::endl;
  59.         return r;
  60. }
  61.  
  62. int main()
  63. {
  64.         std::cout << ret().referencesLocals() << std::endl;
  65.         return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement