Ostrzeżenie C26495
Zmienna "zmienna" jest niezainicjowana. Zawsze inicjuj zmienną składową (type.6).
Uwagi
Zmienna składowa nie jest inicjowana przez konstruktor lub inicjator. Upewnij się, że wszystkie zmienne są inicjowane do końca budowy. Aby uzyskać więcej informacji, zobacz Podstawowe wytyczne dotyczące języka C++ Type.6 i C.48.
Ta kontrola jest wewnątrz proceduralna. Za każdym razem, gdy istnieje wywołanie funkcji niekonstowej, sprawdzanie zakłada, że ta funkcja składowa inicjuje wszystkie elementy członkowskie. Ten heurystyczny może spowodować błędy pominięte i ma miejsce, aby uniknąć wyników fałszywie dodatnich. Ponadto, gdy element członkowski jest przekazywany przez odwołanie niekonst do funkcji, sprawdzanie zakłada, że funkcja inicjuje element członkowski.
Nazwa analizy kodu: MEMBER_UNINIT
Przykład
Poniższy przykład generuje ostrzeżenie C26495, ponieważ zmienna value
składowa nie jest inicjowana podczas MyStruct
tworzenia obiektu.
struct MyStruct
{
int value;
MyStruct() {} // C26495, MyStruct::value is uninitialized
};
Aby rozwiązać ten problem, możesz dodać inicjację klasy do wszystkich zmiennych składowych.
struct MyStruct
{
int value{}; // empty brace initializer sets value to 0
MyStruct() {} // no warning, MyStruct::value is set via default member initialization
};
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla