C ++ это указатель, скрытый аргумент в вызовах функций

У меня есть класс стека с членами и функцией с именем push.

class STACK
{
    int data;
    public:
    void push(int x)
    {
        data=x;
    }
}

Что делает C ++ для преобразования этого утверждения:

s1.push(3);

в

s1.push(this,3);

В основном мой вопрос, что происходит под капотом, чтобы генерироватьthis указатель и передать его как скрытый аргумент?

На самом деле я пишу код на C. Моя цель - иметь программу, максимально приближенную к ООП. Для этого у меня есть указатели на функции в качестве членов структуры. Поэтому я хочу знать, возможно ли как-то отслеживать, какая структура называется функцией (например, "этот" указатель). Я нене хочу делать что-то вроде: s1.push (&s1,3); потому что это превосходит мои цели.

Можно ли конвертировать s1.push (3); на s1.push (&1,3); через подстановку MACRO

Ответы на вопрос(6)

Ваш ответ на вопрос