Uyarı C26402
Return a scoped object instead of a heap-allocated if it has a move constructor (r.3).
Açıklamalar
bir işaretçinin nesneye sahip olup olmadığıyla ilgili karışıklığı önlemek için, taşınabilir bir nesne döndüren bir işlev bunu yığında ayırmalıdır. Daha sonra yığınla ayrılmış bir nesne döndürmek yerine nesneyi değere göre döndürmelidir. İşaretçi semantiği gerekiyorsa ham işaretçi yerine akıllı işaretçi döndürebilirsiniz. Daha fazla bilgi için bkz . C++ Çekirdek Yönergeleri R.3: Bir işlevin işlev içinde ayrılmış ancak bir taşıma oluşturucusunun olduğu bir nesne döndürdüğünde uyarma. Bunun yerine değere göre döndürmeyi düşünün.
Örnek
Bu örnekte C26409 uyarı veren bir bad_example
işlev gösterilmektedir. Ayrıca işlevin good_example
bu soruna nasıl neden olmadığını da gösterir.
// 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 contructors by value instead of unnecessarily heap-allocating the object.
S good_example() noexcept
{
S s;
// ...
return s;
}
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin