【发布时间】:2021-12-09 10:55:15
【问题描述】:
以下表达式有问题:
MyClass *myObject;
MyClass *myObject = new MyClass();
它们之间有什么区别?
【问题讨论】:
-
Why is a raven like a writing desk?(C) 爱丽丝梦游仙境。 -
指针是指针是指针。它不关心它指向的内存是如何分配的。例如:
MyClass myStackObject; MyClass *myObject = &myStackObject;也是有效的 -
一个已初始化,一个未初始化。
-
第一个的含义取决于上下文。如果它在文件范围内,
myObject是一个零初始化指针(即一个空指针,它不指向任何对象,因此取消引用它会给出未定义的行为)。如果它在一个功能块或一个类或结构成员的声明中,myObject是一个未初始化的指针(它的值是不确定的,简单地访问它的值会给出未定义的行为)。第二行初始化myObject,因此它指向一个动态分配的对象。
标签: c++ pointers initialization declaration new-operator