Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Return a scoped object instead of a heap-allocated if it has a move constructor (r.3).
Замечания
Чтобы избежать путаницы о том, принадлежит ли указатель объекту, функция, возвращающая перемещаемый объект, должна выделить его в стеке. Затем он должен возвращать объект по значению, а не возвращать выделенный кучей объект. Если требуется семантика указателя, верните умный указатель вместо необработанного указателя. Дополнительные сведения см. в руководстве по C++ Core R.3. Предупреждайте, возвращает ли функция объект, выделенный в функции, но имеет конструктор перемещения. Рекомендуется вместо этого рассмотреть вопрос о возврате по значению.
Пример
В этом примере показана bad_example функция, которая вызывает предупреждение C26409. В нем также показано, как функция good_example не вызывает эту проблему.
// C26402.cpp
struct S
{
S() = default;
S(S&& s) = default;
};
S* bad_example()
{
S* s = new S(); // C26409, avoid explicitly calling new.
// ...
return s; // C26402
}
// Prefer returning objects with move constructors by value instead of unnecessarily heap-allocating the object.
S good_example() noexcept
{
S s;
// ...
return s;
}