LINUX.ORG.RU

В некоторых случаях гарантируется зануление.

Deleted
()
Ответ на: комментарий от lazyklimm

Для базовых типов?

cvv ★★★★★
() автор топика

Это не так. Конструкторы по умолчанию зануляют данные. Просто эти конструкторы не вызываются автоматически.

class A
{
public:
    A() // int() вызван не будет
    {
    }
private:
    int a; // может быть мусор
};

class B
{
public:
    B()
        : b() // int() - будет 0
    {
    }

private:
    int b;
};

А в чем вопрос я так и не понял. Ты можешь не делать конструктор по умолчанию.

anonymous
()
Ответ на: комментарий от cvv

Для G++ ЕМНИП есть флаг, который дает ворнинг на это.

Pavval ★★★★★
()

есть мнение, что для базовых типов нету такого понятия, как конструктор. скаляр не класс, в крестах нету автобоксинга для скаляров.

в gcc есть -Wuninitialized для таких вещей.

x0r ★★★★★
()

Сделай свою обёртку для базового типа и используй её вместо него. По идее всё будет заинлайнено и на генерируемом коде никак не отразится, а инициализироваться будет гарантированно.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.