я прочитал книгу С. Липпман «внутри объекнтых моделей ++», есть такой кодОбъект, созданный на куче, не является глобальным?
class Foo { public: int val; Foo *pnext; };
void foo_bar()
{
// Oops: program needs bar's members zeroed out
Foo bar;
Foo* baz = new Foo(); // this line i added myself
if (bar.val || bar.pnext)
// ... do something
// ...
}
, и он говорит, что «конструктор по умолчанию не синтезируется для этого фрагмента кода.
Глобальных объекты гарантируют, что их связанная память «обнулена» при запуске программы. Локальные объекты , выделенные в стеке программ, и объекты кучи, выделенные в свободном хранилище, не имеют связанной с ними памяти , а память сохраняется произвольная битовая диаграмма предыдущего использования ».
В этом коде объект baz был создан в куче, и в соответствии с тем, что было сказано выше, этот объект не является глобальным, и он не будет называться конструктором по умолчанию. Я правильно понимаю?
Это не глобальный, но его значения * будут * обнулены. – juanchopanza