前面参数中的"&"和"*"是什么意思?

ibo*_*ros -1 c++

我意识到这些可能是初学者的问题,但为了正确理解概念,我会欣赏可靠的答案或文档链接.

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

例如:

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

要么

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

奖金问题 在上面的post函数中...确实const使得这个函数需要传递常量变量或者它有不同的原因吗?

Pie*_*aud 7

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

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

奖金问题:

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

但是,这也让我们面临潜在的麻烦.引用允许函数更改参数的值,这在许多情况下是不合需要的.如果我们知道函数不应该改变参数的值,但又不想通过值传递,那么最好的解决方案是通过const引用.

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