前端之家收集整理的这篇文章主要介绍了
c – 为什么Qt信号不是常数,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Qt使用
@L_
301_0@进行对象通信.信号通常被声明为成员
函数,然后Qt MOC
生成该
函数的定义.
我想了解的是为什么信号不是const成员函数?
编辑:
我希望信号不会修改发件人,这就是问题的原因.
I would expect signals not to modify the sender
信号(如generated by the MOC)不直接修改类实例的成员.但是,生成的代码将此指针传递给(由)(潜在)插槽消耗.因此,连接的插槽可以改变信号的发送方.
因此技术原因是,如果信号是const,则需要所有槽实现只调用发送方上的const类成员,以便编译代码而不会出错.
在代码安全方面,将信号实现为非const类成员是一个可以理解的决定.在许多情况下,它仍然感觉不自然(例如,如果在同一类中实现的连接槽是const,或者连接的槽完全属于另一个对象).
原文链接:https://www.f2er.com/c/116472.html