gpt4 book ai didi

c++ - 这两种对象实例化方法有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:31 24 4
gpt4 key购买 nike

假设我有一个名为 A 的类:

Class A
{
...
}

以下两种实例化对象的方法有什么区别:

void main(void)
{
A a; // 1
A *pa=new A(); // 2
}

据我目前的理解(对此还不确定):

  • 方法 1 在 main() 方法的堆栈帧上分配对象 a,因此无法删除该对象,因为删除没有意义(还不知道为什么,有人可以解释一下吗? ).

  • 方法 2 在进程的堆上分配对象 a 并在 main() 方法的堆栈帧上分配一个 A* vairable pa,因此对象可以被删除和删除后pa可以赋值为null。

我说的对吗?如果我的理解是正确的,有人能告诉我为什么我不能在方法 1 中从堆栈中删除 a 对象吗?

非常感谢...

最佳答案

对象a 具有自动 存储期限,因此它将在定义范围结束时自动删除。尝试手动删除它没有意义。只有具有动态存储持续时间的对象才需要手动删除,例如使用new分配的*pa

关于c++ - 这两种对象实例化方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2309441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com