如果我将一个变量传递给函数,但将该变量标记为常量,它是否会自动以引用的方式传递?
C++中
void foo(const int a)
测试后:不行,因为它打印了不同的内存位置。
void foo(const int a)
{
cout << &a << endl;
}
int main()
{
int a = 5;
foo(a);
cout << &a << endl;
return 0;
}
C
不可以吗?因为我只能通过指针传递内存位置,而不是真正的引用。就像这里一样:在C中按引用传递
Java
也许编译器可以推断出final
应该指向同一个内存位置?
void foo(final int a)
C#
与Java相同吗?
void foo(const int a)
我知道我的问题涉及到4种语言,但由于我经常使用这4种语言,所以我想知道。
有没有一种方法可以强制Java和C#来处理这个问题?我知道在C++中,我可以在函数中添加&
,这正是我想要的。
void f(const int &a)
实际上,这就是我希望Java和C#编译器在幕后做的大部分工作。