我有一個帶有成員和稱爲push的函數的堆棧類。C++這個指針,函數調用中的隱藏參數
class STACK
{
int data;
public:
void push(int x)
{
data=x;
}
}
是什麼c + +做此發言轉換:
s1.push(3);
到
s1.push(this,3);
基本上我的問題是引擎蓋下會發生什麼,生成this
指針,並把它作爲一個隱藏的論點?
我實際上是在編碼C.我的目標是有一個儘可能接近OOP的程序。爲此我有函數指針作爲結構的成員。因此,我想知道是否有可能以某種方式跟蹤哪個結構稱爲函數(如「this」指針)。我不想做這樣的事情:s1.push(& s1,3);因爲它擊敗了我的目的。
是否有可能轉換s1.push(3);到s1.push(& 1,3);經由宏替換
我完全同意。但是這行代碼是s1.push(3);它如何變成s1.push(this,3); – 2013-03-10 12:38:07
男人,編譯器不是一個hello世界程序。 「但是代碼行是s1.push(3)」不是一個參數。編譯器執行比傳遞隱藏參數要困難得多的任務。 – cubuspl42 2013-03-10 12:39:44
@DarshanShah:與代碼'int main(){}'變成文件系統中的可執行文件一樣:因爲編譯器*就是這樣做的。 – jalf 2013-03-10 14:04:35