Мне нужно создать функцию, которая создает набор символов для меня. Я не уверен, какой из следующих подходов я должен предпочесть. Насколько я понял, я не должен использовать createSet1, потому что, если что-то пойдет не так, прежде чем вернуться, он будет течь.C++ return pointer vs. return local object with std :: move
set<char>* createSet1(){
set<char>* s = new set<char>;
//does something
return s;
}
set<char> createSet2(){
set<char> s;
//does something
return std::move(s);
}
unique_ptr<set<char>> createSet3(){
unique_ptr<set<char>> s(new set<char>);
//does something
return s;
}
Я был бы счастлив, если бы кто-нибудь мог объяснить, какой из них я должен предпочесть и почему. не
не нужно «сказать» 'обратных зОе: : move (...) ', поскольку возвращаемое значение является неявным значением r. Вы действительно получили это право в случае 'unique_ptr' (вы заметили, что' unique_ptr' только для перемещения?) – sehe
А, хорошо, я думал, что std :: move необходим, если это не один из этих «умных» указателей (unique_ptr , shared_ptr). ура –