在C ++中,函数的调用者可以确保其参数不会被修改吗?

时间:2014-10-15 23:07:29

标签: c++ pass-by-reference

在以下C ++代码中:

int foo(int &x); /* a function prototype */

main()
{
    int i=5;
    foo(i);
}

假设我无法以任何方式更改 foo()

是否有办法在 main()中调用 foo()以便它无法修改 i

2 个答案:

答案 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?