我寫了一個小程序:這個函數的機制是什麼?
#include <iostream>
using namespace std;
int raw(int &x) {
cout<<x<<endl;
cout<<&x<<endl;
}
int main() {
int s= 1;
int &z=s;
raw(s);
raw(z);
return 0;
}
的輸出(如預期):
1
0x7fff5ed36894
1
0x7fff5ed36894
它的工作原理,因爲我希望它是,但我很好奇這是怎麼內部實現。它是函數重載還是其他函數,或者其中一個函數是圍繞另一個函數提供的包裝,以提供用戶友好性,或者編譯器自己進行投射?
'z'是's'的別名。無論您在初始化後使用'z'還是使用'z',都可以在它所綁定的對象上執行。所以'raw(s)'和'raw(z)'必須給出相同的輸出,因爲它們在相同的輸入上工作(假設參考透明度在這裏) –
@AndyProwl我知道引用是一個別名。我想知道他們是如何在內部實施的。我已經提到過,「他們按預期工作」。 –