So, I read that you cannot have two std::unique_ptr point to same object. If you want to do that, you need to use std::move and that'll transfer ownership of it. So, I tried to do that with this code.
int main()
{
std::unique_ptr<Random> SP(new Random());
printf("SP : %X\n", SP.get());
std::unique_ptr<Random> SP2(std::move(SP));
printf("SP : %X\n", SP.get());
printf("SP2 : %X\n", SP.get());
SP->SomeFunc();
SP2->SomeFunc();
system("PAUSE>NUL");
return 0;
} 
Here's the code for Random class if you're wondering what SP->SomeFunc() and SP2->SomeFunc() do
class Random
{
public:
Random();
~Random();
void SomeFunc();
};
void Random::SomeFunc()
{
printf("SomeFunc() called (Address: %X)\n", this);
}
Random::Random()
{
printf("Constructor called!\n");
}
Random::~Random()
{
printf("Destructor called!\n");
}

