-2

This might be a newbie question, but I am asking myself it anyway.

If I have a Object class defined:

Object *p = new Object();

Does this code create a pointer p, and at location p, place a Object object, correct?

4

1 回答 1

3

这表示:

  • 为父类的地址准备一个变量并将其命名p
  • 分配足够的内存来存储 Parent 类的内容
  • 调用 Parent 类的构造函数
  • 将该内存的地址存储在变量中p

编辑:回应评论:

这不是构造类的唯一方法。另一种是静态分配一个类,例如。

Parent p;

在这种情况下,您不会将指向 Parent 类的指针存储在变量 p 中,而是整个类本身。在这种情况下:

  • 该类的内存位于堆栈中为函数保留的帧中,该帧定义了此变量(堆栈仅分配一次,当程序加载到内存中时)
  • 当程序到达变量的声明点时,会自动调用构造函数。
  • 当程序离开此变量的范围时,会自动调用析构函数
  • 没有释放内存(对于 Parent 类的实例至少没有),因为堆栈稍后会被重用。
于 2013-05-15T05:00:08.653 回答