Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Return a scoped object instead of a heap-allocated if it has a move constructor (r.3).
Megjegyzések
Annak elkerülése érdekében, hogy egy mutató rendelkezik-e objektummal, a mozgatható objektumot visszaadó függvénynek a veremen kell lefoglalnia azt. Ezután érték szerint kell visszaadnia az objektumot ahelyett, hogy egy halomra osztott objektumot ad vissza. Ha a mutató szemantikája szükséges, nyers mutató helyett intelligens mutatót ad vissza. További információ: C++ Alapvető irányelvek R.3: Figyelmeztetés, ha egy függvény olyan objektumot ad vissza, amely a függvényen belül van lefoglalva, de rendelkezik áthelyezési konstruktorsal. Javasoljuk, hogy inkább érték szerint adja vissza.
példa
Ez a példa egy bad_example C26409 figyelmeztetést generáló függvényt mutat be. Azt is bemutatja, hogy a függvény good_example hogyan nem okozza ezt a problémát.
// 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;
}