多重->;和点 我刚搬到C++,不懂这些代码< /p> QVariant v1 = con->getEnd1()->getProperty(fricstr);
或 你能解释一下这些代码中多个多重->;和点 我刚搬到C++,不懂这些代码< /p> QVariant v1 = con->getEnd1()->getProperty(fricstr);,c++,C++,或 你能解释一下这些代码中多个->和dot的含义吗 一般来说,我理解只使用一个->作为指向对象的值,或使用点作为对象的方法。但是对于multiple我不知道。x->是(*x)的缩写。(解除引用) x->y->z: x->y返回y(从x开始) y->z返回z(从y开始) 同: QVariant v1 = (con->getEnd1())->getProperty(fricstr); 也就是说,首先执行con->getEnd1()。它的计算结果是指向某个对象的指针,让我们调用中间指针p
->
和dot
的含义吗
一般来说,我理解只使用一个
->
作为指向对象的值,或使用点
作为对象的方法。但是对于multiple我不知道。x->
是(*x)的缩写。
(解除引用)
x->y->z
:x->y返回y(从x开始)
y->z返回z(从y开始) 同:
QVariant v1 = (con->getEnd1())->getProperty(fricstr);
也就是说,首先执行con->getEnd1()
。它的计算结果是指向某个对象的指针,让我们调用中间指针p
。然后调用它的p->getProperty(fricstr)
。它与链接任何运算符相同(例如,1+2+3
与(1+2)+3
相同)
要真正明确,它与此等效,不存储中间值:
auto&& p = con->getEnd1();
QVariant v1 = p-> getProperty(fricstr);
这同样适用于
感谢伯哈德;圆点也是一样的。例如:a.b.c;c是b的成员;b是该组织的成员a@NhuNguyen不,c
是a.b
的一个成员,如果con->getEnd1()
返回一个类类型的对象,并带有重载的运算符->
,那么你的代码就不是等价的Hank Claudiu,你能解释一下为什么它是从左到右而不是向后的吗?@M:。你认为现在的auto&
是否与之相当?可能比在这里介绍auto
更令人困惑…@Nhu-Nguyen:这是唯一有意义的方法。如果您有一个对象a
,它有一个对象b
,它有一个对象c
,它有一个对象d
,您可以使用a.b.c.d
沿对象层次结构向下移动。如果它是从右向左的,它就相当于类似于a.(b.(c.d))
。但是b.(c.d)
是什么意思呢?谢谢克劳迪乌,我现在明白了“我理解1+2
的工作原理,但不理解1+2+3
”——还有什么不理解的呢1+2+3
计算1+2
,然后计算+3
。同样地con->getEnd1()->getProperty(fricstr)
计算con->getEnd1()
,然后->getProperty(fricstr)
QVariant v1 = (con->getEnd1())->getProperty(fricstr);
auto&& p = con->getEnd1();
QVariant v1 = p-> getProperty(fricstr);