我读了一本书 S. Lippman "inside c++ object model",有没有这样的代码
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 对象是在堆上创建的,根据上面所说,这个对象不是全局的,它不会被称为默认构造函数。我理解正确吗?