0

我意识到这些可能是初学者的问题,但为了正确理解概念,我希望得到可靠的答案或指向文档的链接。

&在 C++ 函数中,参数名称前面或*后面的数据类型是什么意思?

例如:

void ApplicationUI::requestFinished(QNetworkReply* reply) { //... }

或者

void PostHttp::post(const QString &body) { //... }

额外的问题 在上面的 post 函数中......确实const使它需要这个函数传递常量变量还是有不同的原因?

4

2 回答 2

8

在第一个示例 ( *) 中,您传递了一个指向函数的指针,而在第二个示例 ( &) 中,您传递了一个引用。

要了解两者之间的区别,请阅读这篇文章:C++ 中指针变量和引用变量之间的区别是什么?

奖金问题:

按值传递的主要缺点之一是所有按值传递的参数都被复制到参数中。当参数是大型结构或类时,这可能需要很多时间。参考文献提供了一种避免这种惩罚的方法。当通过引用传递参数时,会创建对实际参数的引用(这需要最少的时间)并且不会复制值。这使我们能够以最小的性能损失传递大型结构和类。

然而,这也给我们带来了潜在的麻烦。引用允许函数更改参数的值,这在许多情况下是不可取的。如果我们知道函数不应该改变参数的值,但又不想按值传递,那么最好的解决方案是通过 const 引用传递。

您已经知道 const 引用是不允许更改被引用变量的引用。因此,如果我们使用 const 引用作为参数,我们向调用者保证该函数不会(也不能)更改参数!

于 2013-06-30T08:55:57.470 回答
3

*表示参数是一个指针并且&通过引用传递

于 2013-06-30T08:56:38.423 回答