Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu, pahalı olabilecek bir kopyalama işlemidir. Bir kopya gerekmediği sürece başvuru kullanmayı göz önünde bulundurun (s.9)
Açıklamalar
Daha fazla bilgi için bkz . P.9: C++ Çekirdek Yönergeleri'nde zaman veya alan harcama.
Bu denetim, işaretli autobir değişkene başvuru atarken istenmeyen ve kaçırılması kolay davranışları kapsar. Değişkenin auto türü başvuru yerine bir değere çözümlenir ve örtük bir kopya oluşturulur.
Bu uyarı skalerler, akıllı işaretçiler veya görünümler için tetiklenmez. Ayrıca, boyutu platforma bağımlı işaretçi boyutunun iki katından fazla olmayan türler için de tetiklenmez.
Bu uyarı değişken mutasyona uğradığında tetiklenmemiştir, çünkü işaretlenmesi
auto&mutasyona yan etkiler doğurur.Bu uyarı, başvuru geçici bir nesneden geldiğinde tetiklenmemiştir, çünkü bu da sarkan bir başvuruyla sonuçlanmıştır. Örneğin:
std::optional<int> TryGetNumber(); ... const auto& val = TryGetNumber().value(); val++; // Temporary from TryGetNumber() is destroyed and val is now dangling
Örnek
Bu örnek, bir başvuru atandığında pahalı olabilecek bir kopya oluşturan değişken tanımını gösterir:
const Object& MyClass::getRef() { ... }
...
auto ref = myclass.getRef(); // C26820 (`ref` takes a copy of the returned object)
Bu sorunu çözmek için değişkeni bildirmek için şunu kullanın const auto& :
const Object& MyClass::getRef() { ... }
...
const auto& ref = myclass.getRef(); // OK