c – 为什么Qt信号不是常数

前端之家收集整理的这篇文章主要介绍了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

猜你在找的C&C++相关文章