Udostępnij przez


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ż

C26494