2013-08-16 40 views
-3

功能参考相当混乱。您可以在函数定义中将一个参数放入参数中,然后在稍后使用它时为参数放置一个非参考非指针值。然后我想到了这个:通过引用指针使用带参数的函数时会发生什么?

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

//More code... 

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

会发生什么? foo使用a,b还是什么?我如何强制使用?

+3

这不应该编译。 – chris

回答

2

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

它不会工作,它是有道理的 - foo()是要求int&类型的参数 - 参考的int,但是你想一个指针传递给它。你会得到错误是一样的东西

cannot convert parameter 1 from 'int *' to 'int &'

关于你的问题

如何强制要么使用?

你的功能目前可以修改传递给它的任何int价值,因为它接受一个reference作为参数。

如果希望你的函数能够修改其参数,改变它的签名:

int foo (int bar)

或者参数更改为参考constint

int foo (const int& bar)

+1

值得一提的是另一种防止修改函数参数的方法是使用const。 int foo(const int&bar) –

+0

@PaulRenton谢谢,我会编辑我的回答:) – Oleksiy

0

我该如何强制要么用?

不,它会产生编译错误。如果想了解引用和指针之间的区别,请通过this链接。

相关问题