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.
Jangan mencoba mendeklarasikan variabel lokal tanpa nama (es.84).
Panduan Inti C++
ES.84: Jangan mencoba mendeklarasikan variabel lokal tanpa nama
Deklarasi variabel yang tidak disebutkan namanya membuat objek sementara yang dibuang di akhir pernyataan. Objek sementara tersebut dengan perilaku nontrivial dapat menunjuk ke kode yang tidak efisien yang mengalokasikan dan segera membuang sumber daya atau ke kode yang secara tidak sengaja mengabaikan data nonprimitive. Terkadang mungkin juga menunjukkan deklarasi yang salah secara biasa.
Keterangan
- Aturan ini mendeteksi jenis dengan destruktor tulisan tangan atau destruktor yang dihasilkan kompilator yang secara transitif memanggil destruktor tulisan tangan.
- Aturan ini dapat menandai kode yang memanggil konstruktor nontrivial dari jenis RAII.
- Logika melompati sementara jika digunakan dalam ekspresi tingkat yang lebih tinggi. Salah satu contohnya adalah sementara yang diteruskan sebagai argumen atau digunakan untuk memanggil fungsi.
Nama analisis kode: NO_UNNAMED_RAII_OBJECTS
Contoh
struct A { A(int i); ~A(); };
void Foo()
{
A{42}; // warning C26444: Don't try to declare a local variable with no name (es.84).
}
Untuk memperbaiki masalah, konversikan objek sementara ke lokal.
struct A { A(int i); ~A(); };
void Foo()
{
A guard{42}; // OK.
}
Lihat juga
C26441
ES.84: Jangan mencoba mendeklarasikan variabel lokal tanpa nama