在C ++中通过引用传递指针会带来什么好处?
将指针传递给C ++传递参考的好处是什么?
最近,我看到许多例子都是通过指针来选择传递函数参数,而不是通过引用传递。 这样做有好处吗?
例:
func(SPRITE *x);
打电话给
func(&mySprite);
与
func(SPRITE &x);
打电话给
func(mySprite);
一个指针可以接收一个NULL参数,一个参考参数不能。 如果有可能想要传递“无对象”,则使用指针而不是引用。
另外,通过指针传递允许您在调用站点显式查看该对象是按值还是按引用传递的:
// Is mySprite passed by value or by reference? You can't tell
// without looking at the definition of func()
func(mySprite);
// func2 passes "by pointer" - no need to look up function definition
func2(&mySprite);
通过指针传递
nothing
。 这可以用来提供可选参数。 通过参考传递
string s = &str1 + &str2;
使用指针。 void f(const T& t); ... f(T(a, b, c));
void f(const T& t); ... f(T(a, b, c));
,指针不能像这样使用,因为你无法获取临时地址。 艾伦霍勒布的“足够的绳索自我在脚下”列出了以下2条规则:
120. Reference arguments should always be `const`
121. Never use references as outputs, use pointers
他列举了为什么将引用添加到C ++的几个原因:
const
引用允许您在避免副本的同时拥有按值传递的语义 他的主要观点是不应将参考用作'输出'参数,因为在呼叫现场不存在关于参数是参考还是参数值的指示。 所以他的规则是只使用const
引用作为参数。
就个人而言,我认为这是一个很好的经验法则,因为当参数是一个输出参数时,它更清晰。 但是,尽管我个人对此一致认同,但如果他们争论输出参数作为参考(某些开发人员非常喜欢),我确实会让我自己受到团队中其他人的意见的影响。
链接地址: http://www.djcxy.com/p/459.html上一篇: Are there benefits of passing by pointer over passing by reference in C++?