
C++
文章平均质量分 91
宁静致远2021
天道酬勤,持之以恒。
发上等愿,结中等缘,享下等福;
择高处立,寻平处住,向宽处行。
展开
-
无需命令行,用 VSCode 轻松提交 Git 代码
Git 作为版本控制工具,通过在开发过程中记录代码的变化,简化了开发者之间的代码协作。而对于许多开发者而言,命令行提交 Git 代码却是一项让人感到困难的任务。然而,现在你可以轻松地通过 VSCode 提交 Git 代码,让你的代码管理变得更加轻松和高效。在本文中,我们将介绍如何使用 VSCode 来实现简单的 Git 提交, 帮助你更加流畅地完成软件开发。git stash 命令用于临时保存当前工作目录的修改,并将工作目录恢复到上一次提交的状态。原创 2025-02-01 17:27:15 · 3003 阅读 · 0 评论 -
C++深拷贝和浅拷贝的区别
在 C++ 中,浅拷贝和深拷贝是处理对象复制时非常关键的概念,尤其是当对象内部有指针成员指向动态分配的内存时。对于指针成员,浅拷贝只复制指针的值(即内存地址),而不复制指针所指向的数据。这意味着原对象和拷贝对象的指针成员将指向同一块内存地址。选择浅拷贝还是深拷贝取决于具体情况,但在涉及到动态内存管理的场景下,深拷贝通常是必要的,以确保数据的独立性和程序的稳定性。这样,原对象和拷贝对象的指针成员就分别指向不同的内存地址,互不干扰。当一个对象被浅拷贝时,所有的成员变量都会直接复制其值,包括指针类型的成员变量。原创 2024-12-27 17:55:45 · 775 阅读 · 0 评论 -
细谈 C++ 返回传值的三种方式:按值返回、按常量引用返回以及按引用返回
C++ 的代码很难看懂,也许就在这些方面,一方面入参的四种方式,一方面出值的三种方式。相互组合,就会让人觉得晦涩难懂。其实好好深入到里面弄清楚其里面的含义,也就比较好理解了。这篇和上一篇写传参四种方式的博客写的非常认真,也希望能够对 C++ 初学者能有一些帮助。原创 2024-12-26 19:42:49 · 1139 阅读 · 0 评论 -
Qt生成随机数详细指南(更现代化的QRandomGenerator类)
Qt提供了强大的随机数生成功能,主要通过QRandomGenerator和QRandomGenerator64类来实现。这些类不仅提供了生成整数和浮点数随机数的方法,还支持生成指定范围内的随机数。虽然旧的qrand()函数仍然可以使用,但高版本已经弃用,不再推荐。原创 2024-11-11 14:09:36 · 2094 阅读 · 0 评论 -
QJson-趟过的各种坑(先坑后用法)
rapidjson是腾讯的开源json解析框架,用c++实现。由于全部代码仅用header file实现,所以很容易集成到项目中。rapidjson的性能也非常出色。原创 2024-11-09 17:29:33 · 651 阅读 · 0 评论 -
【Qt问题】解决 Cannot retrieve debugging output
本文介绍了在Qt开发过程中遇到的’Cannot retrieve debugging output’问题及其解决方法。该问题可能由于同时运行了两个Qt软件导致,解决方案包括关闭其中一个Qt实例或确保项目在单个Qt环境中打开。这时需要打开一个选项:工具->选项->构建和运行->default for “Run in terminal”:由disabled改为enabled。原创 2024-11-07 17:02:59 · 913 阅读 · 0 评论 -
Qt QQueue 安全的多线程队列、阻塞队列
public://唤醒等待队列中的一个线程(来自wait)T take()private:这个 BlockingQueue类使用QMutex和QWaitCondition来保证线程安全,并实现了put、take、isEmpty和size等方法。其中,put方法用于往队列中插入元素,take方法用于从队列中取出元素,isEmpty方法用于判断队列是否为空,size方法用于获取队列中元素的数量。原创 2024-11-06 16:31:18 · 1021 阅读 · 0 评论 -
QT5串口多线程--派生类加moveToThread
之前讲过继承QThread,在虚函数run()中实现线程里的工作。这是qt4.6之前的方法,目前官方推荐的方法,是继承QObject类,再用方法moveToThread来将QObject派生类移动到新线程中去,这样QObject派生类定义的信号和槽的事件响应行为,都会发生在新的线程中。这个方法非常简单。下面还是以串口通讯作为例子,这次不用窗口,用控制台的方式。原创 2024-11-05 15:15:43 · 975 阅读 · 0 评论 -
什么是C++模块化系统?C++20的模块化系统
C++20引入的模块化系统是一种新的代码组织和编译机制,它旨在替代传统的头文件机制,提供更好的代码组织、更快的编译速度和更强的封装性。通过减少冗余的头文件解析和宏定义传播,模块可以显著减少编译时间。模块提供了更好的封装,减少了不必要的依赖暴露。模块可以更清晰地表达模块间的依赖关系,提高代码的可维护性。C++20的模块化系统通过引入模块声明和导入,提供了一种替代传统头文件机制的现代化解决方案。模块化系统不仅减少了编译时间,增强了代码的封装性,还改善了代码的组织和可维护性。原创 2024-11-02 09:18:58 · 1259 阅读 · 0 评论 -
C++接口:构建模块化与可扩展的软件架构
在C++中,接口通常指的是一组纯虚函数,这些函数定义了一个类必须实现的行为。接口本身不提供任何实现,它的主要目的是定义一个契约,任何实现该接口的类都必须遵守这个契约。提供一种方式来定义类之间的协议。促进代码的模块化和解耦。支持多态,使得代码更加灵活和可扩展。原创 2024-11-02 09:09:53 · 759 阅读 · 0 评论 -
C++编程法则 静态成员函数和非静态成员函数之间的相互调用
其生命期和类对象是异步的,(而且静态语意说明即使没有类实体的存在,其静态数据成员的实体也是存的)这个时候对象的生命期还没有开始,如果你要到类中去初始化类静态数据成员,让静态数据成员的初始化依赖于类的实体,,那怎么满足前述静态语意呢?但是在有些情况下只能使用静态成员函数,比如类内绑定自身成员函数作为回调函数,这种情况在开启多线程时很常见,如果不想将回调定义为全局那只能定义为类静态了,为了避免过度破坏封装类中应当尽量不要让类静态成原函数调用类成员。能在类中初始化的成员只有一种,那就是静态常量成员。原创 2024-10-29 08:26:12 · 1442 阅读 · 0 评论 -
Qt QQueue 详解:从底层原理到高级用法
在现代软件开发中,数据结构和算法扮演着至关重要的角色。它们为程序员提供了处理各种不同场景下数据的有效方法。QQueue(队列)是一种常见且实用的数据结构,它在许多应用中都发挥着关键作用。本文将简要介绍QQueue的重要性和简介。队列(Queue)是一种遵循先进先出(FIFO,First In First Out)原则的线性数据结构。在这种结构中,元素的添加(入队)和移除(出队)操作分别在队列的尾部和头部进行。这种特性使得队列在处理一些需要按顺序执行任务的场景中表现出优越性。原创 2024-06-09 22:31:01 · 1130 阅读 · 0 评论 -
C++ 运算符重载
这些指针是行为与正常指针相似的对象,唯一不同的是,通过指针访问对象时,它们会执行其它的任务(比如,当指针销毁时,或者当指针指向另一个对象时,会自动删除对象)。C++ 使用流提取运算符(>>)和流插入运算符( 和原创 2024-03-24 15:29:42 · 906 阅读 · 1 评论 -
Qt、C/C++环境中内嵌LUA脚本、实现LUA函数的调用执行
LUA是一个脚本语言,由标准C编写而成,几乎在所有操作系统和平台上都可以编译、运行,可以很方便的嵌入到其他C/C++环境中,如Qt、VS2012等。一般的lua脚本文件的后缀为.lua,移植lua源码异常的简单,下载源码包后,直接编译即可,因为上面我们说过了LUA是用标准C编写的,所以几乎你常见的编程环境它都能编译LUA。LUA源码下载地址: http://www.lua.org/ftp/下载lua-5.1.5.tar.gz然后解压。原创 2023-08-02 13:45:22 · 2309 阅读 · 0 评论 -
C++和Lua交互总结
Lua和C++是通过一个虚拟栈来交互通信的。由C++先把函数名、变量名、table中键放入栈中,然后把函数名、变量名、table中键出栈,并返回对应的值到栈顶,再由栈顶返回C++。Lua调C++:**Lua调用C++的函数:**先把普通的C++函数包装成Lua_CFunction格式,然后注册函数到Lua解释器中,然后由Lua去调用这个模块的函数。原创 2023-08-01 16:06:26 · 3037 阅读 · 0 评论 -
编译防火墙--C++的Pimpl惯用法解析
编译防火墙--C++的Pimpl惯用法解析编译防火墙--C++的Pimpl惯用法解析(1)禁止复制类(2)显示定义复制语义编译防火墙–C++的Pimpl惯用法解析原文链接:https://blog.csdn.net/lihao21/article/details/47610309Pimpl(pointer to implementation, 指向实现的指针)是一种常用的,用来对“类的接口与实现”进行解耦的方法。这个技巧可以避免在头文件中暴露私有细节(见下图 1),因此是促进 API 接口与实现保原创 2022-05-19 10:37:03 · 576 阅读 · 0 评论 -
C++“接口“与“实现“分离的两种方法
C++ “接口”与“实现”分离的两种方法C++ “接口”与“实现”分离的两种方法接口需求接口与实现分离Pimpl Idiom手法Object Interface手法总结C++ “接口”与“实现”分离的两种方法原文链接:https://blog.csdn.net/TAOKONG1017/article/details/79561856接口需求在软件开发这个行业中,一个较大的软件项目,一般由几个小组共同开发完成,为了将小组之间的影响降低到最低,定义好接口势在必行,如若要求短时间开发完成,定义好接口更是原创 2022-05-18 09:07:54 · 1628 阅读 · 0 评论 -
Lua调用C++
Lua调用C++Lua调用C++具体过程为:Lua部分的代码如下:运行结果程序运行时栈內变化回到C++调用Lua上述是读取过程,然后可以在C++中修改table中的值lua调用C++函数一、C++的函数定义二、注册函数三、C模块四、luaL_openlibs源码解析Lua调用C++原文链接:https://blog.csdn.net/weixin_42111061/article/details/110310412接上一篇文章:C++调用Lua本文在上一篇文章的基础上,使用Lua调用C++。使用文原创 2022-04-29 09:25:51 · 4781 阅读 · 0 评论 -
C++RAII机制
C++RAII机制C++RAII机制什么是RAII?为什么要使用RAII?小结如何使用RAII?C++之RAII技术解析C++RAII机制原文链接:https://blog.csdn.net/quinta_2018_01_09/article/details/93638251什么是RAII?RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对原创 2022-04-29 08:46:13 · 549 阅读 · 0 评论 -
C++ 主流报表框架
C++ 主流报表框架报表框架NCReportCuteReportKD ReportsLimeReportQtRPTQT报表选型(QT报表系列1)QT 使用开源报表 LimeReport 配置笔记 - Windows版Qt开源报表limereport备忘录QT报表Limereport v1.5.35编译及使用limereport报表使用Qt报表控件NCReport教程:添加报表字段原文链接:https://blog.csdn.net/liang19890820/article/details/105071原创 2022-03-17 08:51:14 · 2429 阅读 · 0 评论 -
C++ API设计笔记
C++ API设计笔记1. API简介1.1 什么是API1.2 API设计上有什么不同1.3 为什么要使用API1.4 何时应当避免使用API1.5 API示例1.6 文件格式和网络协议2. 特征2.1 问题域建模2.2 隐藏实现细节2.3最小完备性2.4易用性2.5 松耦合3. 模式(1).创建型模式(2).结构型模式(3).行为模式3.1 Pimpl惯用法3.2 单例3.3 工厂模式3.4 API包装器模式3.5 观察者模式4. 设计4.1 良好设计的例子4.2 收集功能性需求4.3 创建用例4.4原创 2022-03-14 16:20:45 · 887 阅读 · 0 评论 -
QCustomPlot设置游标
QCustomPlot设置游标void MainWindow::on_pBtn_Add_Youbiao_X_clicked(){QVector cursorX;QVector cursorY;QVector cursorX2;QVector cursorY2;QVector cursorX3;QVector cursorY3;QVector cursorX4;QVector cursorY4;double xLabel_left;double xLabel_right;double原创 2021-09-24 10:55:19 · 2198 阅读 · 0 评论 -
QCustompPlot简明使用教程
QCustompPlot绘制曲线1. 前言1.1 简单介绍QCustomPlot的几个重要类QCustomPlot 图表类:用于图表的显示和交互简单介绍QCustomPlot类1.2层和层元素布局和布局元素1. 前言QCustomPlot 是一个基于Qt的画图和数据可视化C++控件。QCustomPlot 致力于提供美观的界面,高质量的2D画图、图画和图表,同时为实时数据可视化应用提供良好的解决方案。QCustomPlot是一个小型的Qt画图标类,支持绘制静态曲线、动态曲线、多重坐标曲线,柱状图,蜡烛原创 2021-09-23 09:13:22 · 6446 阅读 · 0 评论 -
设计模式六大原则之一:依赖倒置原则(DIP :Dependence Inversion Principle)
设计模式六大原则之一:依赖倒置原则(DIP :Dependence Inversion Principle)定义由来解决方案优点思考注意点示例定义高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。也就是说高层模块,低层模块,细节都应该依赖抽象1、C++中什么是依赖倒置原则?依赖倒置原则定义:依赖于抽象(接口),不要依赖具体的实现(类),也就是针对接口编程。2、依赖倒置原则的图解。3、你需要知道C++中的一个重要特性:高内聚,低耦合。高内聚,低耦合。原创 2021-09-14 07:52:11 · 723 阅读 · 0 评论 -
设计模式六大原则之--开闭原则(OCP)
设计模式六大原则之--开闭原则(OCP)前言描述前言The Open - Closed Principle, OCP软件尸体(类、模块、方法等)应该对扩展开放,但是对修改关闭。描述遵循开放-关闭原则设计出来的模块具有两个主要的特征。“对扩展开放”(Open for extension)这意味着模块的行为是可以扩展的。 当应用的需求改变是,我们可以对模块扩展,让它可以具备满足那些改变的新行为。换句话说,我们可以改变模块的功能。“对更改关闭”(Closed for modification)对原创 2021-09-13 09:08:37 · 2223 阅读 · 0 评论 -
C++中引用解说(C++ Primer笔记)
C++中引用解说(C++ Primer笔记)***第一部分:参数传递***1. 传递引用参数2. 使用引用避免拷贝3. 使用引用形参返回额外信息(函数需要多个返回值)4. const形参和实参第二部分:转载一第一部分:参数传递1. 传递引用参数对于引用的操作,实际上是作用在引用所引的对象上。引用形参的行为与之类似,通过使用引用形参,允许参数改变一个或者多个实参的值。2. 使用引用避免拷贝拷贝大的类类型对象或者容器对象比较低效,甚至有的类类型(包括IO类型在内)根本就不支持拷贝操作。当某种类型不支原创 2021-08-26 11:58:37 · 210 阅读 · 0 评论 -
C++拷贝构造函数
C++拷贝构造函数1. 什么是拷贝构造函数?2. 浅拷贝和深拷贝的区别2.1 浅拷贝2.2 深拷贝3. 在C++中,下面三种情况需要调用拷贝构造函数3.1 一个对象作为函数参数,以值传递的方式传入函数体3.2 一个对象作为函数返回值,以值传递的方式从函数返回3.3 一个对象用于给另外一个对象进行初始化(常称为赋值初始化)4. 为什么拷贝构造函数的参数一定要使用引用?5. 防止默认拷贝发生1. 什么是拷贝构造函数?定义:如果一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数原创 2021-08-26 10:41:30 · 484 阅读 · 0 评论