C++这个指针,在函数调用中隐藏参数

Dar*_*hah 0 c++ this

我有一个包含成员的堆栈类和一个名为push的函数.

class STACK
{
    int data;
    public:
    void push(int x)
    {
        data=x;
    }
}
Run Code Online (Sandbox Code Playgroud)

C++如何转换此语句:

s1.push(3);
Run Code Online (Sandbox Code Playgroud)

s1.push(this,3);
Run Code Online (Sandbox Code Playgroud)

基本上我的问题是在引擎盖下发生什么来生成this指针并将其作为隐藏参数传递?

我实际上在C编码.我的目标是有一个尽可能接近OOP的程序.为此我有函数指针作为结构的成员.因此,我想知道是否有可能以某种方式跟踪称为函数的结构(如"this"指针).我不想做类似的事情:s1.push(&s1,3); 因为它打败了我的目的.

是否可以转换s1.push(3); 到s1.push(&1,3); 通过MACRO替换

Aja*_*jay 6

首先要做的事情!该声明:

s1.push(3);
Run Code Online (Sandbox Code Playgroud)

未翻译为:

 s1.push(this, 3);
Run Code Online (Sandbox Code Playgroud)

但对于这样的事情:

STACK::push(&s1, 3); 
Run Code Online (Sandbox Code Playgroud)

STACK::push类/命名空间下可以将其视为全局/命名空间或静态函数STACK,其原型将是:

push(STACK const* pThis, int arg);
Run Code Online (Sandbox Code Playgroud)

this指针总是第一个参数的方法(功能).如果方法有零参数,它仍然有一个参数(this类的指针).