Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Return a scoped object instead of a heap-allocated if it has a move constructor (r.3).
Keterangan
Untuk menghindari kebingungan tentang apakah penunjuk memiliki objek, fungsi yang mengembalikan objek movable harus mengalokasikannya pada tumpukan. Kemudian harus mengembalikan objek berdasarkan nilai alih-alih mengembalikan objek yang dialokasikan timbunan. Jika semantik pointer diperlukan, kembalikan pointer pintar alih-alih pointer mentah. Untuk informasi selengkapnya, lihat C++ Pedoman Inti R.3: Peringatkan jika fungsi mengembalikan objek yang dialokasikan dalam fungsi tetapi memiliki konstruktor pemindahan. Sarankan untuk mempertimbangkan mengembalikannya berdasarkan nilai sebagai gantinya.
Contoh
Contoh ini menunjukkan bad_example fungsi yang meningkatkan peringatan C26409. Ini juga menunjukkan bagaimana fungsi good_example tidak menyebabkan masalah ini.
// 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;
}