Самый простой способ возврата из функции без создания копии
Я только начинаю изучать семантику перемещения, и, судя по моему чтению, она полезна только тогда, когда класс '
new
- в нем что-то есть. Я что-то упускаю, или это делает его таким, что если я хочу исключить копирование элемента при возвращении из функции, один из способов сделать это-использовать std::unique_ptr
? Например, учитывая, что struct
:struct Triangle { POINT p1; POINT p2; POINT p3; };
Если я хочу вернуться из функции, которая ее создает, то лучший способ сделать это-сделать что-то вроде следующего:
std:unique_ptr<MouseHelper::Triangle> MouseHelper::makeTrianglePointingDown(int x, int y) { //The following is hard coded for the sizes I'm using in the example const int halfSize = 5; std:unique_ptr<Triangle> t(new Triangle); t->p1.x = x-halfSize; t->p1.y = y-halfSize-halfSize; t->p2.x = x+halfSize; t->p2.y = y-halfSize-halfSize; t->p3.x = x; t->p3.y = y-2; return t; }
В противном случае, я должен сделать '
Triangle
- в класс, и ... new
структура внутри этого класса, а затем создать соответствующий конструктор перемещения?Спасибо!
Что я уже пробовал:
Чтение. И приведенный выше код работает.