对函数的引用相当混乱。您可以将一个作为参数放入函数定义中,然后在以后使用它时为参数添加非引用非指针值。然后我想到了这个:
int foo (int& bar)
{
//Code
}
//More code...
int* a = &b;
c = foo (a);
会发生什么? foo使用a,b还是什么?我如何强制使用?
答案 0 :(得分:2)
你为什么不亲自测试一下?无论什么时候有疑问,请尝试编译它!
它无效有意义 - foo()
要求的参数类型为int&
- 引用int
,但你是试图传递指针。你会得到的错误就像是
cannot convert parameter 1 from 'int *' to 'int &'
关于你的问题
如何强行使用?
您的函数目前可以修改传递给它的任何int
值,因为它接受reference
作为参数。
如果不希望您的函数能够修改其参数,请将其签名更改为:
int foo (int bar)
或将参数更改为对const
int
:
int foo (const int& bar)
答案 1 :(得分:0)
如何强行使用?
不会产生编译错误。如果想要了解引用和指针之间的差异,请通过this链接。