如何创建动态分配的C ++对象及其指针?

时间:2013-05-15 04:53:47

标签: c++ class pointers memory

这可能是一个新手问题,但无论如何我都在问自己。

如果我定义了Object类:

Object *p = new Object();

此代码是否创建指针p,并且在位置p处放置Object对象,是否正确?

1 个答案:

答案 0 :(得分:3)

这意味着:

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

编辑:回复评论:

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

Parent p;

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

  • 该类的内存位于为函数保留的帧中的堆栈中,该框架定义了此变量(当程序加载到内存中时,堆栈只分配一次)
  • 当程序到达变量声明点时,自动调用构造函数。
  • 当程序离开此变量的范围时,将自动调用析构函数
  • 没有释放内存(至少对于Parent类没有内存),因为堆栈稍后会重复使用。