
C++
凌武贰玖
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++实现精确延时的方法
选择哪种方法取决于你的具体需求、目标平台和精度要求。:长时间延时应结合sleep以减少CPU占用。:考虑RTOS或专用硬件定时器。库实现,兼顾精度和可移植性。原创 2025-07-24 17:51:25 · 291 阅读 · 0 评论 -
地球任意两点求方位角 俯仰角
经纬高 俯仰角 方位角原创 2022-09-26 16:18:31 · 7786 阅读 · 1 评论 -
C++ Qt 两字节相加(和)的校验位
/**********************************************************函数名称:checkSum函数功能:校验位 帧头+数据段按2字节累加和(若数据段个数为奇数,则累加和时在数据段后方补1个字节0x00)函数参数:QByteArray 帧头+数据段的数据 highBit-校验位的高位 lowBit-校验位的低位 cmdHeaderStr-校验位前面的数据函数返回值:QByteArray 校验位**************************..原创 2022-02-19 15:10:58 · 3415 阅读 · 0 评论 -
指针的进阶
文章目录 指针进阶 字符指针 字符指针的作用 指针数组 指针数组的定义 指针数组的使用 数组指针 数组指针的定义 数组名和&数组名 数组指针的使用 数组传参 指针传参 一维数组传参 二维数组传参 一级指针传参...转载 2021-09-28 10:39:37 · 154 阅读 · 0 评论 -
静态数组初始化
h文件 static QVector<double> vdouble; static QVector<QVector<double>> vvdouble; static QStringList Values;cpp文件:QStringList App::Values = QStringList();QVector<double> App::vdouble = QVector<double>();QVector&原创 2021-08-04 09:21:52 · 513 阅读 · 0 评论 -
C++共用体嵌套结构体
#include <stdio.h> typedef union{ unsigned int u; struct { unsigned char a :1; unsigned char b :1; unsigned char c :6; unsigned char d :1; } ST;}UN; int main() { UN un; un.u = 0;.原创 2021-05-04 17:48:39 · 730 阅读 · 0 评论 -
Qt反射机制一
1.概述reflection 模式(反射模式或反射机制):是指在运行时,能获取任意一个类对象的所有类型信息、属性、成员函数等信息的一种机制。2.Qt 具体实现反射机制的方法①、Qt 使用了一系列的类来实现反射机制,这些类对对象的各个方面进行了描述,其中QMetaObject 类描述了QObject 及其派生类对象的所有元信息,该类是Qt 元对象系统的核心类,通过该类的成员函数可以获取QObject 及其派生类对象的所有元信息,因此可以说QMetaObject 类的对象是Qt 中的元对象。注原创 2021-02-24 16:31:04 · 2358 阅读 · 0 评论 -
C++函数模板二 显示具体化
当使用结构体来作为形参给另一个结构体赋值时,只想实现部分结构体内容的参数改变,而不改变所有参数。则可以使用显示具体化。对于给定的函数名,可以有非模板函数、模板函数和显示具体化模板函数以及它们的重载模板。显示具体化的原型和定义应以template<>开头,并通过名称来指出类型。具体化优先于常规模板,而非模板函数优先于具体化和常规模板。下面是用于交换job结构的非模板函数、模板函数和具体化的原型://非模板函数原型void swap(job &,job &.原创 2021-02-24 14:10:52 · 328 阅读 · 1 评论 -
C++函数模板一
函数模板是通用的函数描述,使用泛型来定义函数,通过将类型作为参数传递给模板,可使编译器生成该类型的函数。#include <QCoreApplication>#include<QDebug>#include<vector>#include<iostream>using namespace std;template<typename T>T getSumNum(T &t1,T &t2){ return原创 2021-02-24 11:42:16 · 170 阅读 · 0 评论 -
C++泛型编程
1.模板介绍泛型编程:指的是直接应用“使用模板编写好的函数模板或类模板库程序”进行编程。在具体使用时,程序员只需向使用的库函数或类模板提供类型或值即可。模板是泛型编程的基础。比如使用标准模板库中的容器、迭代器进行编程,就是泛型编程。模板函数:“模板函数”强调的是函数,函数使用模板实现。函数模板,“函数模板”强调的是模板,模板实现的是函数的功能。2.类模板和函数模板的通式①函数模板:template<class或typename模板形参名,...> 返回类型 函数名(形参列表)原创 2021-02-24 11:17:52 · 594 阅读 · 0 评论 -
第三方库收集
qwt - 绘图库 ->QWT的官网地址如下: http://qwt.sourceforge.net/ 另外 具体构建方法可参考这个链接 Qt的qtpropertybrowser Qt的属性表控件,本来是可以不用编译的,但高版本qt(5.9之后)位置就变了,这里就作为需构建行列 GSL - 数学计算库 -> GSL是很出名的数学库,SA的window版本使用的是GSL For Window:GSL for window官网 GSL的官网见: GSL 官网 由于sa的window版本使用的是原创 2021-02-06 13:45:33 · 219 阅读 · 0 评论 -
c++(Qt)多线程单例模式的双检测实现
看到Singleton,学过设计模式的都知道,就是单例模式,意思是保证程序在执行时某个变量只有一个实例。class Singleton {public: static Singleton * getInstance() {}private: Singleton(): {} ~Singleton(): {} static Singleton * instance;} Singleton * Singleton::instance = NULL; Si原创 2021-01-19 14:45:18 · 391 阅读 · 0 评论 -
VC2015运行库安装失败
VC2015安装失败,0x80240017-未指定的错误。32位操作系统64位操作系统原创 2020-10-15 10:14:32 · 5076 阅读 · 0 评论 -
c++控制对象的创建方式
栈与堆是对象的主要分布区,它们对应着两种基本的对象创建方式:以new方式手动管理的堆创建和只需声明就可使用的栈创建。针对不同的需求,我们会选择对应的对象创建方式。比如,为了避免内存泄漏,我们不会再堆中分配对象。1.要求在堆中建立对象为了执行这种限制,必须找到一种方法保证用new是建立对象的唯一手段。这一点很容易做到。非堆对象是在定义它时自动构造的,而且是在生存期结束时自动释放的。按照这样的思路,我们只要禁止使用隐式的构造函数和析构函数,就可以实现上述目标。禁止使用构造函数和析构函数最简单的方法是原创 2020-10-09 17:24:53 · 205 阅读 · 0 评论 -
Qt QDomDocument xml 中文乱码解决方法
出现乱码是一位读写的编码不一致造成的。1.写入xml // 保存 XML 文件 QFile wfile(fileName); // 只写模式打开文件 if (wfile.open(QFile::ReadWrite | QFile::Text)) { QTextStream out(&wfile); doc.save(out, QDomNode::EncodingFromDocument); wfile.c原创 2020-09-28 20:34:01 · 4613 阅读 · 0 评论 -
lambda表达式用法
Lambda 表达式实际上是一个函数,只是它没有名字,叫匿名函数。C++11新增了lambda函数,其基本格式如下 [捕捉列表] (参数) mutable -> 返回值类型 {函数体}"捕捉列表",也叫“外部变量访问方式说明符”,可以是=或&,表示{}中用到的、定义在{}外面的变量在{}中是否允许被改变。=表示不允许,&表示允许。当然,在{}中也可以不使用定义在外面的变量。“-> 返回值类型”可以省略。[]是lambda的引出符,捕捉列表能够捕捉上下文中的变量,来供原创 2020-09-16 17:55:37 · 1292 阅读 · 0 评论 -
C++两个字符转换为一个字符
C++两个字符转换为一个字符,直接上干货,代码如下:#include<stdio.h>#include<string.h>#include<ctype.h>unsigned char charToHex(unsigned char left,unsigned char right){ const char *hex = "0123456789ABCDEF"; int leftInt = strchr(hex,toupper(left))-.原创 2020-08-25 23:18:02 · 773 阅读 · 0 评论 -
C++回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这个函数是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。回调函数机制:1、定义一个函数(普通函数即可);2、将此函数的地址注册给调用者;3、特定的事件或条件发生时,调用者使用函数指针调用回调函数。回调函数的好处:解耦,更改函数地址就可以实现不同的功能#include &l原创 2020-08-22 14:53:04 · 355 阅读 · 0 评论 -
C++四种强制类型转换
C++有四种强制类型转换方法,如下:static_cast<DestType>(expr) 用于相关类型间的转换 const_cast<DestType>(expr) 用于转换掉const(常量性)或者volatiel(易变性) dynamic_cast<DestType>(expr) 用于在继承层次中安全的导航 reinter...原创 2019-11-06 14:37:28 · 1056 阅读 · 0 评论 -
Qt多线程继承自QThread
qt多线程继承QThread,是通过重写run()函数来实现。本文通过在子线程实现计数功能,并将计数的结果返回值主线程显示,来记录多线程的使用方法。代码如下:myThread.h如下,注意:不能省略Q_OBJECT,#include<QObject>,因为这是信号槽 的基础。#ifndef MYTHREAD_H#define MYTHREAD_H#include<QObject>#include<QThread>#include<qDebu原创 2020-06-27 17:12:25 · 685 阅读 · 0 评论 -
qt调用vs2010编译的dll
Qt调用vs2010编译的DLL1、新建qt工程2、然后右键添加库->添加外部库->3.添加后.pro中有如下文本。4.执行qmake,即可执行原创 2020-05-26 22:16:46 · 521 阅读 · 0 评论 -
C++ Qt二进制转换写入char数组,char转换为二进制字符串
二进制类型的字符串转换QString s="00111011";s.toInt(nullptr,2);//表示二进制字符串转换为10进制注意:QByteArray::number(str.toInt(nullptr,2),16);//转换为16进制 但是结果是qbytearray原创 2020-05-20 11:45:15 · 6330 阅读 · 0 评论 -
C++/Qt目录的表示
1、.表示当前目录2、..表示父目录./表示当前目录,通常可以省略../表示父级目录/根目录原创 2020-05-18 15:14:40 · 457 阅读 · 0 评论 -
C++boost、STL文章学习
boost文章:http://zh.highscore.de/cpp/boost/frontpage.html。STL文章:http://c.biancheng.net/stl/原创 2020-05-09 14:05:20 · 163 阅读 · 0 评论 -
为何要把类的构造函数定义为private(转)
通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?没错,我也知道这将会使构造函数成为私有的,这意味着什么? 我们知道,当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的,由于在class外部不允许访问私有成员,所以这将导致编译出错。...转载 2020-01-10 10:03:49 · 803 阅读 · 0 评论 -
C++ Qt设置系统时间
设置系统时间,需要包含头文件#include<windows.h>。bool MainWindow::setPCSystemTime(const QDateTime &dateTime){ SYSTEMTIME st; GetLocalTime(&st); st.wYear = dateTime.date().year(); ...原创 2020-01-09 13:16:47 · 4979 阅读 · 2 评论 -
C++设计模式☞策略模式(strategy模式)--------------------------行为型模式
Strategy 模式和 Template 模式要解决的问题是相同(类似)的,都是为了给业务逻辑(算 法)具体实现和抽象接口之间的解耦。Strategy 模式将逻辑(算法)封装到一个类(Context) 里面,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口 的实现委托给组合对象实现。State 模式也有类似的功能,他们之间的区别将在讨论中给出。UML结构图如下。...转载 2020-01-08 14:03:30 · 226 阅读 · 0 评论 -
C++ 友元
友元一般存在于不同类之间,在一个类中,可以用全局函数作友元函数。而在不同类中,类成员函数作友元函数友元可以是一个函数,该函数被称为友元函数,函数既可以是全局也可以是类的成员;友元也可以是一个类,该类被称为友元类。同类对象间无私处,异类对象间有友元友元目的本质:是让其它不属于本类的成员(全局函数,其它类的成员函数),成为类的成员而具备了本类成员的属性。友元函数友元函数是可以直...转载 2020-01-08 11:20:41 · 279 阅读 · 0 评论 -
Qt5配置winpCap
在网上查了很多资料,搞了差不多一天总算解决Qt5使用winPcap配置的问题了!记录一下 以便后续忘记1、下载winpcap4.1.3,百度即可搜索到2、下载winpCap开发者工具包http://www.winpcap.org/devel.htm3、新建Qt控制台工程4、在.pro文件中添加如下代码 主要是配置头文件路径和库路径 由于我是放在C盘的,所以路径如下 路径可以...原创 2020-01-06 13:30:45 · 1234 阅读 · 0 评论 -
Qt绘制简单的风向玫瑰图代码
1、绘制简单的风向玫瑰图代码2、主要使用QPainter3、在子widget上绘制需要使用widget监视事件 eventfilter update();//更新界面//镜头12 QPainter painter1(WindRose12)/**/; painter1.begin(WindRose12); painter1.setFont...原创 2020-01-06 13:21:38 · 911 阅读 · 0 评论 -
C++(Qt)中new一个对象的,加括号和不加括号的区别
结论加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数,看需求 C++在new时的初始化的规律可能为:对于有构造函数的类,不论有没有括号,都用构造函数进行初始化;如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,而加了括号的new会在分配内存的同时初始化为0。 A a =new A(this);创建一个a对象,调用没有参数的构造函数并指定父类。...原创 2019-12-27 15:19:40 · 3266 阅读 · 0 评论 -
QPainter画箭头
画箭头需要注意:计算箭头两个线的位置和长度与直线或弧线间的位置关系。1.画直线箭头关键代码 const int length = 10;//箭头斜着的投影到线上的长度 QVector<QLineF> lines; lines.append(QLineF(20,height()/2,width()/2,height()/2)); li...原创 2019-12-24 11:32:55 · 5892 阅读 · 0 评论 -
QPainter☞之 鼠标绘图
QPainter鼠标绘图要点1.使用drawPoint()函数2.记录上一次(鼠标)画的点的位置。上代码:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include<QPainter>#include<QMouseEvent>namespace U...原创 2019-12-23 15:39:45 · 833 阅读 · 0 评论 -
C++三种野指针及应对/内存泄露
C++三种野指针及应对/内存泄露C++三种野指针及应对/内存泄露野指针,也就是指向不可用内存区域的指针。如果对野指针进行操作,将会使程序发生不可预知的错误,甚至可能直接引起崩溃。野指针不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是野指针是很危险的,也具有很强的掩蔽性,if语句对它不起作用。造成野指针的...原创 2019-12-20 14:31:17 · 351 阅读 · 0 评论 -
Qt☞之QPainterPath
QPainterPathQPainterPath类为绘画操作提供了一个容器,允许构造和重用图形形状。代码一加运算:void MainWindow::painterPathDemo(QPainter *painter){ painter->save(); QPainterPath path; path.moveTo(200,200); path....原创 2019-12-19 14:19:52 · 2548 阅读 · 0 评论 -
Qt在子部件上绘图
本文记录如何使用qpainter在子部件上绘图。1.需要在子部件上安装事件过滤器frame->installEventFilter(this); //安装事件过滤器到窗口2.头文件中声明如下bool eventFilter(QObject *watched, QEvent *event);bool m_flag=false;//绘图标志3.声明画图函数...原创 2019-12-16 16:26:54 · 1321 阅读 · 0 评论 -
C++之override
C++ 之 override作用 不使用override 使用override作用在成员函数声明或定义中, override 确保该函数为虚函数并覆写来自基类的虚函数。位置:函数调用运算符之后,函数体或纯虚函数标识 “= 0” 之前。不使用override#include "pch.h"#include <iostream>using namespace ...原创 2019-12-06 13:39:39 · 1336 阅读 · 0 评论 -
Qt多线程之继承QObject(moveToThread方式)
Qt多线程有两两种方式,第一种继承QThread,复写run()函数,但是run()和main()类似,run()函数才是子线程的入口函数,所以在设计到类的操作时,必须把对象或者指针放在run函数里面,否则就不在一个线程里面了,会出现错误。第二种方式,继承QObject,通过moveToThread()将自定义的线程添加到子线程QThread里,然后信号槽的方式实现,shix实现主线程和子线程...原创 2019-11-01 10:03:15 · 3203 阅读 · 0 评论