我看过代码,其中带有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