Advertisement
Guest User

Untitled

a guest
May 27th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.36 KB | None | 0 0
  1. // Nazwa pliku wykonywalnego: SmartPointer
  2.  
  3. // Prosze dopisac kod, dodac nowe pliki, tak aby program wykonywal
  4. // sie, a wynik jego dzialania byl taki sam jak podany na końcu tego
  5. // pliku.
  6.  
  7. // Prosze zaimplementować szablon UniquePointer, ktory bedzie przechowywal adres
  8. // obiektu. Moze istniec tylko jeden obiekt przechowujacy ten sam
  9. // adres. Gdy obiekt typu UniqeuPointer jest niszczony, niszczony
  10. // powinien byc rowniez obiekt na ktory wskazuje.
  11.  
  12. // UWAGA
  13. // W zadaniu bardzo wazne jest zarzadzanie pamiecia.
  14.  
  15. // Pliku Main.cpp, nie wolno modyfikowac.
  16.  
  17. // Komentarz w kodzie mowia jakie wyjscie powinna generowac dana
  18. // linia.
  19.  
  20. // Ostateczny program powinien byc przyjazny dla programisty (miec
  21. // czytelny i dobrze napisany kod).
  22.  
  23. // Makefile dolaczony do rozwiazania powinien tworzyc plik wykonywalny
  24. // o nazwie Fraction. Program nalezy kompilowac z flagami -Wall -g.
  25.  
  26. // Makefile powinien zawierac rowniez cel "clean", ktory usuwa pliki
  27. // obiektowe i plik wykonywalny.
  28.  
  29. // Przy wykonaniu zadania nie wolno korzystac z internetu, notatek,
  30. // ani zadnych innych materialow (w tym wlasnych wczesniej
  31. // przygotowanych plikow oprocz makefile)
  32.  
  33. // Rozwiazanie (czyli dodane pliki, makefile i Main.cpp) nalezy
  34. // wgrac do UPEL.
  35.  
  36. #include"Main.h"
  37. #include<iostream>
  38.  
  39. void AddToInt (int* val){ *val += 2; }
  40.  
  41. int main ()
  42. {
  43.   using namespace std;
  44.  
  45.   std::cout<<"===== INTEGER =====\n";
  46.   UniquePointer<int> dynamicInt1 = new int (4);
  47.   std::cout<<"pointer: "<<dynamicInt1<<"\n";    // pointer: [pointing to <adres>]
  48.   std::cout<<"  value: "<<*dynamicInt1<<"\n";   //   value: 4
  49.   {
  50.     std::cout<<"\n---- entering new scope ---- \n";
  51.     UniquePointer<int> dynamicInt2 = dynamicInt1;
  52.     std::cout<<"pointer: "<<dynamicInt1<<"\n";  // pointer: [pointing to 0]  
  53.     std::cout<<"pointer: "<<dynamicInt2<<"\n";  // pointer: [pointing to <adres>]
  54.     std::cout<<"  value: "<<*dynamicInt2<<"\n"; //   value: 4
  55.  
  56.     UniquePointer<int> dynamicInt3 = new int (6);
  57.     cout<<"pointer: "<<dynamicInt3<<"\n";   //  pointer: [pointing to <adres>]
  58.     cout<<"  value: "<<*dynamicInt3<<"\n";  //    value: 6
  59.     AddToInt (dynamicInt3);
  60.     cout<<"Add two: "<<*dynamicInt3<<"\n";  // Add two: 8
  61.    
  62.     dynamicInt3 = dynamicInt2 = dynamicInt2;
  63.     cout<<"EQUAL: "<<"\n";                            //  EQUAL:
  64.     cout<<"pointer: "<<dynamicInt1<<"\n";             //  pointer: [pointing to 0]
  65.     cout<<"pointer: "<<dynamicInt2<<"\n";             //  pointer: [pointing to 0]
  66.     cout<<"pointer: "<<dynamicInt3<<"\n";             //  pointer: [pointing to <adres>]
  67.     cout<<"  value: "<<*dynamicInt3<<"\n";            //    value: 4
  68.     std::cout<<" ---- end of scope ---- \n\n";
  69.   }
  70.  
  71.   std::cout<<"===== FLOAT =====\n";
  72.   UniquePointer<float> dynamicFloat = new float (3.5);
  73.   std::cout<<"pointer: "<<dynamicFloat<<"\n";    // pointer: [pointing to <adres>]
  74.   std::cout<<"  value: "<<*dynamicFloat<<"\n";   //   value: 3.5
  75.  
  76.   return 0;
  77. }
  78.  
  79.  
  80. /*
  81. ===== INTEGER =====
  82. pointer: [pointing to <adres>]
  83.   value: 4
  84.  
  85. ---- entering new scope ----
  86. pointer: [pointing to 0]
  87. pointer: [pointing to <adres>0]
  88.   value: 4
  89. pointer: [pointing to <adres>]
  90.   value: 6
  91. Add two: 8
  92. EQUAL:
  93. pointer: [pointing to 0]
  94. pointer: [pointing to 0]
  95. pointer: [pointing to <adres>]
  96.   value: 4
  97.  ---- end of scope ----
  98.  
  99. ===== FLOAT =====
  100. pointer: [pointing to <adres>]
  101.   value: 3.5
  102.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement