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.
Ne próbáljon meg név nélküli helyi változót deklarálni (es.84).
C++ alapvető irányelvek
ES.84: Ne próbáljon név nélküli helyi változót deklarálni
A névtelen változódeklaráció létrehoz egy ideiglenes objektumot, amely az utasítás végén el lesz vetve. Az ilyen, nemtriviális működésű ideiglenes objektumok vagy nem hatékony kódra mutathatnak, amely lefoglalja és azonnal eldobja az erőforrásokat, vagy arra a kódra, amely véletlenül figyelmen kívül hagyja a nemprimittív adatokat. Néha az is előfordulhat, hogy egyértelműen helytelen deklarációt jelez.
Megjegyzések
- Ez a szabály kézzel írt destruktort vagy fordító által létrehozott destruktort tartalmazó típusokat észlel, amelyek átvitt módon kézzel írt destruktort hívnak meg.
- Ez a szabály megjelölheti azokat a kódot, amelyek egy RAII típusú nemtriviális konstruktort hívnak meg.
- A logika ideiglenesen kihagyja őket, ha magasabb szintű kifejezésekben használják őket. Ilyenek például az argumentumként átadott vagy függvények meghívására használt ideiglenesek.
Kódelemzés neve: NO_UNNAMED_RAII_OBJECTS.
Példák
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).
}
A probléma megoldásához konvertálja az ideiglenes objektumot helyire.
struct A { A(int i); ~A(); };
void Foo()
{
A guard{42}; // OK.
}
Lásd még
C26441
ES.84: Ne próbáljon név nélküli helyi változót deklarálni