我看過代碼,其中帶有register關鍵字的變量通過引用傳遞給函數。通過引用傳遞一個寄存器變量
版本1:
inline static void swap(register int &a, register int &b)
{
register int t = a;
a = b;
b = t;
}
版本2:
inline static void swap(register int a, register int b)
{
register int t = a;
a = b;
b = t;
}
什麼是兩個版本之間的差異?
據我瞭解,一個和b保持在寄存器因此參考運營商不應該有任何的效果在這些寄存器中的值所做的更改應在整個主叫 - 被叫邊界仍然存在,而無需使用參考運算符。
「register」關鍵字已棄用。無論是否存在,99%都不會有什麼區別。 – chris
引用轉換爲機器代碼級地址,它可以防止將變量映射到除可能用於PDP-11以外的寄存器,對此,AFAIK不存在C++編譯器。 –
@Alf不,PDP-11也沒有寄存器地址。 – EJP