1. 基本概念 回调函数(Callback Function)是C++编程中一种重要的机制,允许通过函数指针或对象引用间接调用函数。它在事件处理、异步编程、框架设计等领域广泛应用,能够提升代码的灵活性和解耦性。 回调函数本质上也是个函数,不过是用于”回调”的函数。所谓回调,可以理解为将一个函数的调用权交给另一个函数,并在适当的时刻由后者调用前者,而…
1. 枚举enum 传统的枚举类型,帮助开发者快速定义一系列整形常量。关于枚举类型的介绍和使用在这里不再过多介绍,示例如下: class MyClass{ public: enum Color { RED, // 0 GREEN, // 1 BLUE // 2 }; }; 相比于enum class的特点: enum的成员直接暴露在其定义的作用域中…
本文对普通变量、普通类对象在初始化时使用()和{}的情况进行区分说明,以免混淆不清。 一般使用()是使用构造函数初始化,使用{}是使用列表初始化,如下。 1. 基本初始化(略过) 这里大概对基本初始化方式做一个归纳 1.1 默认初始化 即只声明,让其调用默认构造函数。 对于基本变量类型(如int、double...),只声明就不会定义具体的初始值。…
1. 锁机制概述 1.1 概念与作用 在程序使用多线程处理事务时,难免会遇到访问共享资源的情况,而为了共享资源能够被合理地分配与使用,就引入了锁机制来保证线程访问共享资源的互斥性与同步性,最终目的就是为了保证多线程不会因竞争共享资源而导致死锁等问题,合理地使用锁机制能保证程序的有效运行。 互斥性:在同一时刻,不能有多个线程访问同一共享资源,即让共享…
信号与槽是我个人认为QT中最牛的机制之一,最近没有其他的内容可写,今天就来细细总结一下这个信号与槽机制。 1. 信号与槽机制概述 信号与槽机制可以理解为QT中的一种通信手段,在运行相关代码前,分别声明信号和槽,再利用connect()方法将信号和对应的槽连接起来,之后再需要的地方使用emit触发信号,那么就可以让槽响应。 其中,槽可以是特定的槽函数…
1. 使用vtk提供的格式转换方法 以XML格式为例: vtk库中支持多种格式的读写转换,比如利用XML格式,可以将vtkPolyData格式序列化为string类型,直接使用vtk库中的 vtkXMLPolyDataWriter 方法进行序列化 ,以及 vtkXMLPolyDataReader 方法解序列化。 示例: // 读vtkPolyDat…
1. 避免创建过多中间变量 过多的中间变量不利于代码的可读性,还会增加内存的使用,而且可能导致额外的计算开销。 将用于同一种情况的变量统一管理,可以使用一种通用的变量来代替多个变量。 2. 函数中习惯使用引用传参而不是返回值赋值 常有的一种情况是,需要使用函数进行计算或处理数据,并通过其返回值获得结果。 对于简单的计算或处理,直接使用返回值返回结果…
正则表达式与C++

1. 概述 1.1 正则表达式概述 正则表达式(Regular Expressions,简称 regex)是用于匹配文本模式的一种特殊字符序列,其可以用一系列字符来表示出不同文本的对应模式。正则表达式的应用范围十分广泛,包括验证文本格式、判断字符种类、解析文本信息、转换目标文本、遍历搜索文本、符号化文本等。 一般在文件搜索、浏览器搜索时都可以使用正…
C++ Lambda表达式
QT中多线程写法
1. Lambda表达式的简述 Lambda表达式是C++11引入的一种函数对象,其使用更为简洁,能更方便的嵌入需要函数的地方。 Lambda表达式也被称为匿名函数,其不需要特定的函数名称,甚至不用指定参数和返回类型。 合理使用Lambda表达式能有效提高代码的可读性,减少代码的冗余量,使代码更为简洁、高效、安全。 2. Lambda表达式的语法格…
1. QThread及moveToThread() 使用情况: 多使用于需要将有着复杂逻辑或需要一直占用并运行的类放入子线程中执行的情况,moveToThread是将整个类的对象移入子线程。 优缺点: 优点:更符合QT的逻辑设计;灵活使用管理线程;将类的任务逻辑与线程逻辑区分开。 缺点:不易于单独对指定函数单独放入子线程,也就不易于将一个类中多个函…