-3

带有函数的引用相当混乱。您可以将一个作为参数放入函数定义中,然后在以后使用时为该参数放入一个非引用非指针值。然后我想到了这个:

int foo (int& bar)
{
    //Code
}

//More code...

int* a = &b;
c = foo (a);

怎么了?foo 使用 a、b 还是什么?我如何强制使用?

4

2 回答 2

2

你为什么不自己测试一下?每当您有疑问时,请尝试编译它!

它不起作用,而且很有意义 -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)

于 2013-08-16T01:31:19.290 回答
0

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.

于 2013-08-16T02:14:10.193 回答