gpt4 book ai didi

c++ - 以 qreal 引用作为参数的语法

转载 作者:行者123 更新时间:2023-11-28 07:55:24 24 4
gpt4 key购买 nike

我将 Qt 与 C++ 一起使用,但我似乎不理解某些让我感觉不一致的东西。我有一个方法可以操纵作为参数发送给它的变量,这是它的声明 aManipulation(qreal& a);//对qreal的引用

我使用包含两个 qreal 值的 QPointF。该类可以通过一个方法返回一个 qreal 值,或者通过另一个方法返回一个引用 qreal&。所以我对这些情况很好奇:

qreal value = 1;
QPointF point; point.setX(1);

//OK -- this works eventhough I don't send it as a qreal&
aManipulation(value);

//FAIL -- actually trying to send a qreal& reference is an error
aManipulation(value&);

//OK -- this method however returns a qreal&
aManipulation(point.rx());

//FAIL -- this just returns the '1' and I understand it cannot be referenced
aManipulation(point.x());

为什么将对象而不是对象的引用发送到需要对象引用的方法就足够了?我很困惑,因为用纯指针这样做会很清楚。

最佳答案

当您将“值”传递给:

aManipulation(qreal& value)
{
}

通过说:

qreal myreal = 1.2;
aManimulation(myreal);

编译器实际上将一个引用传递给 myreal,没有必要说“myreal&”(事实上,你不能)。

传递指针可能看起来更清晰,但引用方式更安全。您仍然可以获得将地址传递给某物(而不是整个某物)的好处,而没有指针被修改的风险。

我认为代码也更简洁。您不需要所有的“*”,也不需要将“const”放在正确的位置来防止指针被修改,同时仍然允许它指向的内容。

当我查看所有指针都被传递的旧代码时,它看起来很丑陋,但这是主观的。当然,有时您实际上想要传递指针(或指向指针的指针)。

关于c++ - 以 qreal 引用作为参数的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12824446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com