// #include <iostream>
#include <string>
#include <memory>
// class menu{
// public:
// menu() = default;
// menu(int one,int two):a(one),b(two){};
// int show(){
// // this->a = a;
// // this->b = b;
// return a+b;
// };
// private:
// int a;
// int b;
// };
int main()
{
// int *p = new int(2252);
// std::cout<<"new dynamic memory's address "<<p<<std::endl;
// std::cout<<"value of the dynamic space "<<*p<<std::endl;
// delete p;
// p = nullptr;
// std::cout<<"freed memory address "<<p<<std::endl;
// std::cout<<"freed memory value "<<*p<<std::endl;
// std::shared_ptrstd::string one = std::make_sharedstd::string("what the hell is going one ?");
// std::cout<<one<<std::endl;
// std::cout<<*one<<std::endl;
// std::shared_ptr<menu> two = std::make_shared<menu>(3,4);
// std::cout<<two<<std::endl;
// std::cout<<two->show()<<std::endl;
// std::cout<<two->show(333,444)<<std::endl;
std::unique_ptr<int> up;
up.reset(new int);
// std::cout<<"up="<<up<<std::endl;
// std::cout<<"*up="<<*up<<std::endl;
*up = 20;
std::cout<<"*up="<<*up<<std::endl;
// std::cout<<"up ="<<up<<std::endl;
*up = 30;
std::cout<<"*up ="<<*up<<std::endl;
up.reset();
std::cin.get();
std::cin.get();
return 0;
}