它是如何工作的,Test*pObj = new Test(); 因为构造函数不返回任何内容

bjs*_*123 1 c++

我想在c ++上做得更好.我在main()中有一个Test类和下面的代码.

Test *pObj = new Test();
Run Code Online (Sandbox Code Playgroud)

如果我们通过逐步逐步调试来调试,首先它转到新函数来分配内存,然后调用构造函数.然后它回到main()函数.众所周知,构造函数不会返回任何内容.在那种情况下,为什么pObj将具有由new分配的指针?知道编译器是如何实现的吗?

CB *_*ley 5

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

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