带有函数的引用相当混乱。您可以将一个作为参数放入函数定义中,然后在以后使用时为该参数放入一个非引用非指针值。然后我想到了这个:
int foo (int& bar)
{
//Code
}
//More code...
int* a = &b;
c = foo (a);
怎么了?foo 使用 a、b 还是什么?我如何强制使用?
你为什么不自己测试一下?每当您有疑问时,请尝试编译它!
它不起作用,而且很有意义 -foo()
要求类型参数int&
- 对 an 的引用int
,但您正试图将指针传递给它。你会得到的错误是这样的
cannot convert parameter 1 from 'int *' to 'int &'
关于你的问题
我如何强制使用?
您的函数当前将能够修改int
传递给它的任何值,因为它接受 areference
作为参数。
如果您不希望您的函数能够修改其参数,请将其签名更改为:
int foo (int bar)
或将参数更改为对 的引用const
int
:
int foo (const int& bar)
How do I force either use?
No it will generate compilation error. If want to understand diffence between references and pointers, please go through this link.