在 C++ 中,this 指针作为隐藏参数传递给方法,它实际上指向当前对象,但是“this”指针存储在内存中的什么位置......在堆栈、堆中,数据在哪里?
最佳答案
标准没有指定 this
指针的存储位置。
当在函数调用中将其传递给成员函数时,一些编译器将其传递到寄存器中,而其他编译器将其传递到堆栈中。它还可能取决于编译器选项。
关于您唯一可以确定的是this
是一个基本类型的右值,因此您不能获取它的地址。
并非总是如此。
在准标准 C++ 中,您可以分配给 this
,例如为了指示构造函数失败。这是在引入异常之前。指示构造失败的现代标准方法是抛出异常,以保证有序清理(如果没有被用户代码阻止,例如臭名昭著的 MFC 放置 new
错误)。
关于c++ - 分配 'this' 指针的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071052/