我有一个包含成员的堆栈类和一个名为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替换
首先要做的事情!该声明:
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类的指针).