当我写这段代码时:
Animal *p;
Animal b;
p = &b;
Run Code Online (Sandbox Code Playgroud)
在我创建指针的第一行.是创建Animal的新对象还是仅在编写第二行时?
谢谢.
当您声明指针[并且声明是定义]时,仅为指针分配空间,没有Animal创建对象.
如果不初始化指针,则不能以任何方式使用它,除非将其指向有效Animal对象或为其指定特殊的"空指针值"以指示指针未指向有效对象.你甚至无法测试它是否真的指向一个有效的Animal对象.
始终建议在创建指针时将指针初始化为null或有效对象,因此我建议:
Animal* p = 0; // or = NULL
Animal u;
p = &u;
Run Code Online (Sandbox Code Playgroud)
或更好:
Animal u;
Animal* p = &u;
Run Code Online (Sandbox Code Playgroud)