刚刚接触qt, 发现有一个东西叫signal slot ,翻译为信号槽。
免责声明,我是一个beginner。Google了很多资料,很多文章写signal slot的。所以,这里只是把我个人觉得精彩的地方整理在一起,再偶尔加上一点点自己的看法而已。
看问题,再stackoverflow上看到这样一个提问,大意思是这样:
他们团队的qt项目中,一位资深的软件工程师运用了大量的c-style的回调函数,而没用使用qt中很精妙的signal slot机制。
回调有哪些缺点?
Callbacks have two fundamental flaws: Firstly, they are not type-safe. We can never be certain that the processing function will call the callback with the correct arguments. Secondly, the callback is strongly coupled to the processing function since the processing function must know which callback to call.
什么叫类型安全?
类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与类型安全的程序之间,没有必然联系。好的程序员可以使用类型不那么安全的语言写出类型相当安全的程序,相反的,差一点儿的程序员可能使用类型相当安全的语言写出类型不太安全的程序。绝对类型安全的编程语言暂时还没有。
什么是信号、槽?
A signal is an observable event, or at least notification that the
event happened.
A slot is a potential observer, typically in the form a function to be
called.
You connect a signal to a slot to establish the observabl