【发布时间】:2015-04-22 22:45:13
【问题描述】:
我会用一个小代码来解释我的问题:
class C {
int a;
public:
func() {
a = 4;
};
};
int main() {
C obj1;
obj1.func();
return 0;
}
这里func() 方法尝试将a(obj1 的数据成员)设置为值4。func() 如何访问a?是因为func() 可以访问this* 以获得obj1?
如果这是真的,func() 如何访问this*?从main() 调用obj1.func() 时,它是否作为隐式参数传递给func()?
如果它作为参数传递,main() 堆栈是否由存储为局部变量的this* 组成?
如果否,this* 指针是如何以及何时生成的,它存储在哪里?
我试图根据我对主题的理解逐步提出这个问题。如果一切都是真的,我很困惑是否对于堆栈上静态生成的每个对象,堆栈中都存储了一个额外的 this*。
请随时提出修改建议。
谢谢。
【问题讨论】:
-
类的成员函数自动访问类的变量。这是关于类的基本知识。
-
@aruisdante:谢谢。它有助于回答我的问题。
标签: c++ class memory stack this