Re: различие value и default инициализации
От: remark Россия http://www.1024cores.net/
Дата: 28.07.05 01:14
Оценка: 6 (1)
Здравствуйте, _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 инициализации свободу, так она ничего кроме выделения памяти и делать не будет

1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.