c++ - 分配 'this' 指针的内存

标签 c++ pointers this

在 C++ 中,this 指针作为隐藏参数传递给方法,它实际上指向当前对象,但是“this”指针存储在内存中的什么位置......在堆栈、堆中,数据在哪里?

最佳答案

标准没有指定 this 指针的存储位置。

当在函数调用中将其传递给成员函数时,一些编译器将其传递到寄存器中,而其他编译器将其传递到堆栈中。它还可能取决于编译器选项。

关于您唯一可以确定的是this 是一个基本类型的右值,因此您不能获取它的地址。

并非总是如此。

在准标准 C++ 中,您可以分配给 this,例如为了指示构造函数失败。这是在引入异常之前。指示构造失败的现代标准方法是抛出异常,以保证有序清理(如果没有被用户代码阻止,例如臭名昭​​著的 MFC 放置 new 错误)。

关于c++ - 分配 'this' 指针的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071052/

相关文章:

c++ - GTK+ 与任何程序

c++ - 你遇到过的最糟糕的现实世界宏/预处理器滥用是什么?

jquery - addClass 不起作用,无法定义(这个)

javascript - 使用setTimeout()时如何使用call()设置 `this`的值?

c - 通过简单地使用指向它中间的指针来拆分 C 数组是否是一种不好的做法?

Java继承困惑,父类(super class)和子类成员变量同名

c++ - 如何让函数访问其他 .cpps 变量?

c++ - 如何创建一个用户可以在菜单更改之间不断添加值的 vector ?

c++ 将指向类的指针转换为类的实例

c++ - std::unordered_map<int32_t, int32_t> 在堆上声明