当构造函数被调用时,我们将它推到堆栈上,如果是,那么当它被弹出时?堆栈上的构造函数
堆栈上的构造函数
回答
当调用构造函数(或其他函数)时,调用地址被压入堆栈。当函数返回时,它从堆栈弹出。函数本身(构造函数或其他)不会被压入堆栈。
这当然假设函数的代码没有内联生成 - 在这种情况下没有调用和不返回,并且可能根本没有堆栈使用。
如果您在堆栈上创建一个对象,当您退出该堆栈框架/作用域时,它将被弹出/删除。
无论碰巧碰到什么地方,构造函数都会调用构建一个类。如果你写这样的东西:
{
Foo f;
...
}
然后Foo有本地范围,将分配在堆栈上,然后在那里构建。如果你写的东西是这样的:
new Foo f;
然后Foo将被分配在堆上,然后在那里构建。当执行线程离开封闭范围(花括号)时,第一个Foo将被销毁,然后从堆栈弹出。当你调用delete时,第二个Foo将被销毁并释放。
'Foo f();'声明一个函数,而不是对象。改为尝试'Foo f;'。 – 2011-04-05 17:15:17
是的。当我累了的时候,这会让我感到疲惫。谢谢。 – swestrup 2011-04-07 13:54:12
- 1. 堆栈拷贝构造函数
- 2. 调用堆栈上大对象的构造函数
- 3. 使用数组的堆栈复制构造函数
- 4. 使用链接列表复制堆栈的构造函数
- 5. 需要C++构造函数/堆栈在PHP
- 6. 使用构造函数来复制堆栈
- 7. 构造函数调用的存储位置在哪里?堆栈还是堆?
- 8. 在堆或堆栈中创建构造函数的区别是什么?
- 9. 构造函数的问题:使用堆栈的自然数<Integer>
- 10. 堆栈上的递归函数
- 11. 当函数内部静态构造对象时,它会分配在堆上还是堆栈上?
- 12. 堆 - 构造函数和析构函数,内存分配
- 13. 构造函数调用了错误的“this”指针。这是堆栈腐败?
- 14. 数据结构:堆栈
- 15. jQuery bug,slidetoggle()函数堆栈
- 16. MEAN堆栈更新函数
- 17. 基于数组的堆栈 - 析构函数中的错误
- 18. 构造函数中的调用基构造函数和其他构造函数
- 19. 堆栈,堆和框架在概念上如何映射到c#构造?
- 20. 字符堆栈,字符串堆栈,整数堆栈,整数数组堆栈等
- 21. 没有参数的构造函数或参数构造函数
- 22. 函数修改堆栈时如何将堆栈传递给函数?
- 23. 堆栈函数仅堆栈最后一个光栅文件
- 24. 构造函数调用具有参数的构造函数
- 25. 函数调用中的堆栈对象何时构建?
- 26. 析构函数调用(堆栈)变量之间的赋值?
- 27. 析构函数如何去除嵌套的堆栈类型?
- 28. 在ViewerComparator构造函数上的AssertionFailedException
- 29. C++ - 构造函数,复制构造函数,移动构造函数,析构函数
- 30. Java-数据结构堆栈:从用户输入的堆栈打印出整数
如果你想让这个问题得到解答,需要更具体的了解 – JaredPar 2011-04-05 16:12:26
推送什么? – 2011-04-05 16:12:31
构造函数只是函数 – 2011-04-05 16:12:45