[英]C++ Stack Frame/Activation Record and 'this' pointer
这是我在这里的第一篇文章,如果我搞砸了,我会很感激任何建议。 C++ 是否实现了激活记录? 我在这方面的经验主要是 Java,所以我不确定其他语言是否也一样。 如果是这样,在 C++ 中说“this”是指向激活堆栈上前一条记录的指针是否正确? 例如:
...
class Example {
private:
int num;
public:
void setNum(int num) {
this->num = num;
}
...
因此,激活堆栈将在堆栈上有一个“示例”object,然后当调用 function 'setNum(...)' 时,它将将该调用放在激活堆栈上。 因此,“this”的类型为 Example*,并指向 function 调用之前堆栈中的“Example” object。 那是对的吗? 谢谢大家!
this
仅存在于class
或struct
中。 它不存在于免费的 function 中。
this
指向 object,其成员 function 被调用。
在您的情况下, this
指向 Example 的Example
,因此类型为Example*
我不知道ActivationRecord这个词。 C++ 不知道 function 堆栈的概念,这只是一个实现细节。
с++ 中的一切都非常简单。 this
将是指向当前对象的指针( class Example
的实例)。 如果可以调用setNum
,那么您已经有了这个 object。 您不需要为任何成员设置值。
class Example {
private:
int num;
public:
void setNum(int _num) {
num = _num;
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.