功能参考相当混乱。您可以在函数定义中将一个参数放入参数中,然后在稍后使用它时为参数放置一个非参考非指针值。然后我想到了这个:通过引用指针使用带参数的函数时会发生什么?
int foo (int& bar)
{
//Code
}
//More code...
int* a = &b;
c = foo (a);
会发生什么? foo使用a,b还是什么?我如何强制使用?
功能参考相当混乱。您可以在函数定义中将一个参数放入参数中,然后在稍后使用它时为参数放置一个非参考非指针值。然后我想到了这个:通过引用指针使用带参数的函数时会发生什么?
int foo (int& bar)
{
//Code
}
//More code...
int* a = &b;
c = foo (a);
会发生什么? foo使用a,b还是什么?我如何强制使用?
你为什么不自己测试一下呢?每当你有疑问时,尝试编译它!
它不会工作,它是有道理的 - foo()
是要求int&
类型的参数 - 参考的int
,但是你想一个指针传递给它。你会得到错误是一样的东西
cannot convert parameter 1 from 'int *' to 'int &'
关于你的问题
如何强制要么使用?
你的功能目前可以修改传递给它的任何int
价值,因为它接受一个reference
作为参数。
如果不希望你的函数能够修改其参数,改变它的签名:
int foo (int bar)
或者参数更改为参考const
int
:
int foo (const int& bar)
值得一提的是另一种防止修改函数参数的方法是使用const。 int foo(const int&bar) –
@PaulRenton谢谢,我会编辑我的回答:) – Oleksiy
我该如何强制要么用?
不,它会产生编译错误。如果想了解引用和指针之间的区别,请通过this链接。
这不应该编译。 – chris