C++ 当前对象的引用存储在内存中的什么位置?

C++ 当前对象的引用存储在内存中的什么位置?,c++,compiler-construction,compilation,C++,Compiler Construction,Compilation,我有一个简单的问题。我知道在编译一个程序后,当我调用一个函数时,会生成一个调用堆栈,其中包含参数、本地变量的空间、返回点和我负责的寄存器 但在C++语言这样的面向对象语言中,编译器存储对当前对象的引用?code>object->instanceMethod()是否将对象指针像参数一样存储在调用堆栈中 我知道问题是通才,谢谢你的回答 它是实现定义的,但在实践中你会发现大多数(全部)C++编译器生成的代码将< > 指针作为函数的隐藏第一个参数,因此,您可以在方法签名中明确地指定它, 它是实现的定义

我有一个简单的问题。我知道在编译一个程序后,当我调用一个函数时,会生成一个调用堆栈,其中包含参数、本地变量的空间、返回点和我负责的寄存器

但在C++语言这样的面向对象语言中,编译器存储对当前对象的引用?code>object->instanceMethod()是否将对象指针像参数一样存储在调用堆栈中


我知道问题是通才,谢谢你的回答

它是实现定义的,但在实践中你会发现大多数(全部)C++编译器生成的代码将< <代码> > <代码>指针作为函数的隐藏第一个参数,因此,您可以在方法签名中明确地指定它,

它是实现的定义,但在实践中,您会发现大多数(C++)编译器生成的代码将< <代码> > <代码>指针作为函数的隐藏第一个参数,因此,您可以访问它,而不必在方法签名中明确地指定它。在C++中,当成员函数被称为指向它将操作的实例的指针(即,将被定义为<代码>此代码>函数内的函数)时,它会隐式地传递到其他函数参数/参数旁边。实际上,不同的系统使用不同的约定,所以一些这样的参数可以打包成寄存器,并且永远不会放在堆栈上(这往往会更快),但是您的概念基本上是正确的。C++中,

< p>,当一个成员函数被称为指向它将运行的实例的指针时。(即,函数中的
this
将与其他函数参数/参数一起隐式传递。实际上,不同的系统使用不同的约定,因此一些此类参数可能会打包到寄存器中,而不会放在堆栈中(这往往更快)有些编译器可能使用一种特殊的调用约定。例如VisualC++中的<代码> >此调用> /Cord>约定是将<代码> < < /C> >指针传入ECX登记器中进行32位构建。是的,但这只是一个实现参数的实现细节。(在堆栈上而不是使用寄存器)。我写的只是它作为隐式第一个参数传递,这与调用约定无关。:-)有些编译器可能使用一种特殊的调用约定。例如VisualC++中的<代码>这个调用< /COD>约定是将<代码>这个指针传入ECX登记器中进行32位构建。是的,但这只是一个实现参数的实现细节(在堆栈上使用寄存器)。.我写的只是它作为隐式第一个参数传递,这与调用约定无关。:-)