# sigslotTest **Repository Path**: Q_uan/sigslotTest ## Basic Information - **Project Name**: sigslotTest - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-11-13 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## sigslot介绍:  sigslot是一个线程安全、类型安全,用C++实现的sig/slot机制(sig/slot机制就是对象之间发送和接收消息的机制)的开源代码库。该库完全使用C ++实现, 并且不需要对源代码进行预处理即可使用,只有一个头文件sigslot.h。 ## Sarah Thompson说:  Qt库( 有关更多信息,请参见http://www.troll.no/)是我个人首次看到的扩展C ++的尝试,方法是在该语言的现有编程技术库中添加“信号槽”隐喻。  当我开始使用Qt时,对我来说是一个启示,在撰写本文时,它一定与三年前差不多。一次,我可以相对快速地编写代码,并有一定的机会按我的预期工作,而不必花很多时间用叉子将水推上山去,而这通常是为MFC应用程序注入生命的日子。Qt给我印象最深的是它的信号/插槽隐喻。Qt使用预处理器moc来预处理扩展的C\+\+语法。简而言之,任何Qt类都可以拥有一个或多个信号以及一个或多个插槽。插槽非常类似于普通成员函数。实际上,可以直接将插槽作为成员函数调用,唯一的语法差异是类头文件中需要slot关键字。Qt中的信号被声明为成员函数,只是它没有本地实现,只是在头文件中看起来像成员函数原型。可以使用connect函数将信号与任何其他C++对象中的任意数量的插槽连接。发出信号时,使用new关键字generate,将调用所有连接的插槽。  原则上,信号和插槽有点像指针,在信号发出之后,可以将信号“连接”到需要通知的插槽上。当然,使用指针,无论是函数指针,指向类的指针还是指向类成员函数的指针,都有其自身的风险。给定这样的指针,不能保证使用它是安全的-在给定使用上下文的情况下,程序员始终必须知道它是安全的。当然,大多数程序员几乎始终都可以做到这一点。但是,当我们弄错了,我们的代码去窘况爆炸,通常是在向最大客户的来访CEO演示之前的五分钟。我总是倾向于使用编程语言自动处理这类事情的情况。 #### 我认为信号和插槽比指针具有三个主要优势:  **语法上更整洁**。信号和插槽使代码可读性强。您定义信号。您定义插槽。您将它们连接起来。就这样,毫不奇怪。  **固有的鲁棒性**。这是整洁的部分:当信号/插槽连接的任一端损坏时,该连接将自动删除。因此,不可能发出信号并使信号到达已经被删除的类。最重要的是,您无需编写任何显式的清理代码-如果调用方超出范围,则没问题。如果被呼叫者超出范围,也没有问题。  **简化代码重用**。由于必须达成协议的是信号和插槽,而不是整个类的接口,因此将以前从未打算以这种方式工作的不同的类插入在一起会容易得多。(从我这里拿走-我很生气,这样做确实有所作为)