Я обновляю класс до C++ 14 и пытаюсь выяснить простейший способ инициализировать все переменные экземпляра до нуля при построении. Вот то, что я до сих пор:Является ли стандартный конструктор по умолчанию инициализацией переменных равными нулю?
class MyClass {
public:
int var;
float* ptr;
double array[3];
MyStruct data;
unique_ptr<MyStruct> smart_ptr;
MyClass() = default;
~MyClass() = default;
}
Является ли установка конструктор default
эквивалент делать:
MyClass() : var{}, ptr{}, array{}, data{}, smart_ptr{} {}
... или мне нужно инициализировать каждую переменную? (. Я пробовал как в Visual Studio, и я получаю нули так или иначе, но я не уверен, что это удача или нет)
Я Instancing класс без скобок: MyClass obj;
Человек, я собирался дать вам верный ответ, но теперь я не уверен. См. Также http://stackoverflow.com/questions/2417065/does-the-default-constructor-initialize-built-in-types – Mikhail
Hahah :) Я знаю, правильно! Я действительно видел этот пост, но это был действительно этот комментарий, который оставил меня неуверенным: http://stackoverflow.com/questions/2417065/does-the-default-constructor-initialize-built-in-types#comment36188015_2418195. Итак, он равен нулю, если у вас нет конструктора вообще, и вызовите 'MyClass instance()' с помощью скобок? : | –
Логически, для установки конструктора в значение 'default' будут использоваться члены-инициализации по умолчанию. Инициализация по умолчанию не всегда эквивалентна нулевой инициализации. – Peter