c++ - C++ 堆栈帧/激活记录和“this”指针
问题描述
这是我在这里的第一篇文章,如果我搞砸了,我会很感激任何建议。C++ 是否实现了激活记录?我在这方面的经验主要是使用 Java,所以我不确定其他语言是否也一样。如果是这样,在 C++ 中说“this”是指向激活堆栈上前一条记录的指针是否正确?例如:
...
class Example {
private:
int num;
public:
void setNum(int num) {
this->num = num;
}
...
因此,激活堆栈将在堆栈上有一个“示例”对象,然后当调用函数“setNum(...)”时,它将将该调用放在激活堆栈上。因此,“this”的类型为 Example*,并指向函数调用之前堆栈上的“Example”对象。那是对的吗?谢谢大家!
解决方案
this
只存在于class
orstruct
中。它不存在于自由函数中。
this
指向调用其成员函数的对象。
在你的情况下,this
指向一个实例,Example
因此类型是Example*
我不知道ActivationRecord这个词。C++不知道函数栈的概念,那只是一个实现细节。
推荐阅读
- google-apps-script - 无法列出所有群组电子邮件的用户(谷歌应用脚本)
- html - 使用 html/css 在移动设备上堆叠带有图像的表格
- microsoft-edge - 禁用 Microsoft Edge 的 HTTP2
- git - GIT输入了错误的密码,不能再克隆了
- java - 将行添加到表后,无法更改 .docx 文件中的行文本
- ajax - 如何让控制器将投票值注册到数据库?
- excel-2010 - 如果单元格中有日期,则返回日期;如果单元格为空白或有文本,则返回 N/A 或空白
- jquery - JQuery Flip取消功能
- sql-server - SSRS 2016 偶发错误 rrRenderingError
- javascript - 如何防止在 Kendo Sortable / Integration - ListView 中对项目进行排序(固定位置)?