gpt4 book ai didi

c++ - 它是如何工作的,Test *pObj = new Test();因为构造函数不返回任何东西

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:26 24 4
gpt4 key购买 nike

我正在努力提高 C++ 水平。我在 main() 中有一个测试类和下面的代码。

Test *pObj = new Test();

如果我们通过一条一条的指令调试,首先会去new函数分配内存,然后调用constructor。然后它回到 main() 函数。众所周知,构造函数不返回任何东西。在那种情况下,pObj 怎么会有由 new 分配的指针?知道编译器是如何实现它的吗?

最佳答案

当您使用new 表达式时,编译器会生成代码来分配内存,然后在分配的内存上调用构造函数来创建新对象。如果成功,它返回一个指向新对象的指针。

构造函数没有返回值,编译器只是在需要构造新对象的一 block 内存上添加对构造函数的调用。构造函数不必返回对象的位置,代码已经知道对象必须在哪里;它(有效地)将其传递给构造函数。

关于c++ - 它是如何工作的,Test *pObj = new Test();因为构造函数不返回任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3598833/

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