Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Return a scoped object instead of a heap-allocated if it has a move constructor (r.3).
Observações
Para evitar confusão sobre se um ponteiro possui um objeto, uma função que retorna um objeto móvel deve alocá-lo na pilha. Em seguida, ele deve retornar o objeto por valor em vez de retornar um objeto alocado por pilha. Se a semântica do ponteiro for necessária, retorne um ponteiro inteligente em vez de um ponteiro bruto. Para obter mais informações, consulte C++ Core Guidelines R.3: Avisar se uma função retorna um objeto que foi alocado dentro da função, mas tem um construtor move. Sugira considerar devolvê-lo por valor.
Exemplo
Este exemplo mostra uma função que gera aviso bad_example C26409. Ele também mostra como a função good_example não causa esse problema.
// 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;
}