Здравствуйте, _Winnie, Вы писали:
_W>пока придумал только один пример отличия. Если есть non-pod тип, вроде
_W>_W>class A
_W>{
_W> std::string s;
_W> int i;
_W>};
_W>
_W>но без user-defined конструкторов то при default инициализации будет вызван default конструктор и переменная i не будет инициализированна. А при value-initialization i будет инициализирована нулем.
_W>Какие еще отличия есть? Что-то я один конкретный пример придумал, а чем они вообще отличаются никак не пойму, в чем смысл их отличия.
В этом и есть основной смысл.
При default инициализации производится меньше действий: основное — выделяется память, для типов, которые имеют конструкторы, они вызываются (тут уж никуда не деться). А при value инициализации плюс к этому инициализируются нулём и все простые типы.
Дай default инициализации свободу, так она ничего кроме выделения памяти и делать не будет