我意识到这些可能是初学者的问题,但为了正确理解概念,我会欣赏可靠的答案或文档链接.
是什么意思&或*在参数名称的前面,或后的C++函数的数据类型?
例如:
void ApplicationUI::requestFinished(QNetworkReply* reply) { //... }
要么
void PostHttp::post(const QString &body) { //... }
奖金问题
在上面的post函数中...确实const使得这个函数需要传递常量变量或者它有不同的原因吗?
在第一个示例(*)中,您传递指向函数的指针,在第二个示例(&)中,您传递的是引用.
要了解两者之间的区别,请阅读以下文章:C++中指针变量和引用变量之间有什么区别?
奖金问题:
传递值的一个主要缺点是,所有通过值传递的参数都被复制到参数中.当参数是大型结构或类时,这可能需要花费很多时间.参考文献提供了一种避免这种惩罚的方法.当通过引用传递参数时,将为实际参数创建引用(这需要最少的时间)并且不会复制值.这允许我们以最小的性能损失传递大型结构和类.
但是,这也让我们面临潜在的麻烦.引用允许函数更改参数的值,这在许多情况下是不合需要的.如果我们知道函数不应该改变参数的值,但又不想通过值传递,那么最好的解决方案是通过const引用.
您已经知道const引用是一个不允许更改被引用变量的引用.因此,如果我们使用const引用作为参数,我们向调用者保证该函数不会(也不能)更改参数!