Qt中定义了Q_OBJECT后,会为每个这样的类生成一个moc信息,有一个编号,和这个编号对应的signal或者slot的名称。connect的时候就把调用哪个slot的编号确定下来,同时检查slot的函数签名是否一致,从来实现所谓的“类型安全”,然后在触发slot的时候,会根据这个编号,来调用相应的方法。
委托,就是包装的函数指针,在创建委托的时候,会把函数名称和函数指针在内部对应起来,clr根据函数名称来确定传入委托的函数指针是否是类型安全的。然后根据函数指针来调用函数。然后MS有扩展了编译器,搞出了2.0中的扩展方法,3.5里面的lambda expression这些花里胡哨的东西,其实实质都是一样的,实例化一个委托。
Qt的事件-槽与C#的事件委托 类似
最新推荐文章于 2023-08-29 23:12:47 发布