在以下C ++代码中:
int foo(int &x); /* a function prototype */
main()
{
int i=5;
foo(i);
}
假设我无法以任何方式更改 foo()。
是否有办法在 main()中调用 foo()以便它无法修改 i ?
答案 0 :(得分:8)
给它一份i
。这是唯一的方法。
int j = i;
foo(j);
答案 1 :(得分:-1)
如果要阻止它,可以先将其转换为const引用:
template<class T> const T& const_(T& r) { return r; }
int main()
{
int i = 0;
foo(const_(i));
}
但实际上:如果你没有全力修改它,为什么它不是const?