Hej
Który kod poniżej jest lepszy (z użyciem r-value reference czy l-value reference)? Czy to obojętne? Wynk końcowy jest taki sam. To przykład z pracy, metoda cośtam robi, czasem może przejąć ownership nad pointerem a czasem nie.
#include <stdio.h>
#include <string>
#include <iostream>
#include <memory>
void metoda(std::unique_ptr<std::string>&& ptr)
{
std::unique_ptr<std::string> ptr2 = std::move(ptr);
}
int main()
{
std::unique_ptr<std::string> ptr(new std::string("dummy"));
metoda(std::move(ptr));
if(ptr)
std::cout << "ptr TRUE" << std::endl;
return 0;
}
czy
#include <stdio.h>
#include <string>
#include <iostream>
#include <memory>
void metoda(std::unique_ptr<std::string>& ptr)
{
std::unique_ptr<std::string> ptr2 = std::move(ptr);
}
int main()
{
std::unique_ptr<std::string> ptr(new std::string("dummy"));
metoda(ptr);
if(ptr)
std::cout << "ptr TRUE" << std::endl;
return 0;
}