C++
文章平均质量分 61
C++
Liuqz2009
不念过去不畏将来,全心活在当下!
寒窗二十载,人生再出发!
展开
-
DLL导出API注意事项
中用来分配的环境不一样。关于这一点 window核心编程 中的 dll 里面进行了讲解,但是说真的我还是不明白为什么会这样。导出接口的方法的输入参数,这时可以作为引用来传递。返回时并不释放字符串空间,尽管执行了析构函数。// 现在该想到 com 中 IUnknown 的重要作用了吧!一个原则:某个模块中分配的空间就应该由它来释放!容器,会导致崩溃或其它内存问题,所以一般要求动态库的接口必须是。这种情况同样出现情况 2 的问题。的具体方式是不一样的。中释放空间,但由于是浅拷贝,所以将出现错误。原创 2024-04-03 11:11:27 · 913 阅读 · 0 评论 -
CMake 围炉札记
删除文件夹下的文件 rm CMakeCache.txt 重新编译即可。原创 2024-03-05 10:23:24 · 554 阅读 · 0 评论 -
VSCode 和 CLion
各个 IntelliSense 都有自己的代码格式化,可以不使用 clang-format 进行格式化,此处列出备用。提供,以在 Windows、Linux 和 macOS 上实现跨平台 C 和 C++ 开发。选择活动栏上的扩展视图图标或使用键盘快捷键 ( Ctrl+Shift+X )。Visual Studio Code 的 C/C++ 支持由。打开终端(cmd或bash),进入当前代码所在的文件夹,输入。如果 designer 打不开 ui 文件,可以把。实参(Arguments)改为。原创 2023-09-25 10:34:36 · 927 阅读 · 0 评论 -
C++ 围炉札记
看不出右值引用对普通基本数据有任何实际意义,但是大量文章使用基本数据来讲解,完全没有讲到有意义的点子上,这样过于简化讲解,容易误导、困惑初学者。右值引用真正用意,是用于解决类对象内部拥有的动态数据的回收(转移),提高程序运行效率。这个简单的例子揭示了移动语义存在的价值,因为有些情况下,数据是可以转移所有权的,而不必拷贝一份。这里,我们实现了一个简单的数组类,自定义了拷贝构造函数和移动构造函数。说到实现,其实是变量替换,临时变量直接被构建在引用变量的位置,生命周期自然相同了。但移动后,需要把旧对象的。原创 2023-09-08 10:31:23 · 335 阅读 · 0 评论 -
软件升级相关
是一款免费的开源exe升级工具,支持自动下载最新的程序包、自动安装最新的程序包、自动卸载旧版本的程序等功能。是一款免费的开源exe升级工具,支持自动下载最新的程序包、自动安装最新的程序包、自动卸载旧版本的程序等功能。2)升级检测:当程序启动时,Squirrel会检测是否有新的程序包,并自动下载最新的程序包。2)升级检测:当程序启动时,Sparkle会检测是否有新的程序包,并自动下载最新的程序包。3)安装新程序包:Squirrel会自动安装最新的程序包,并将旧版本的程序卸载。原创 2023-07-25 09:35:49 · 427 阅读 · 0 评论 -
Modbus 红尘幻海
Modbus 简介Modbus协议简易入门教程详解ModBusmodbus 官网RS232/RS485的特性与区别分析【Qt】modbus之串口模式写操作【Qt Modbus通信】QModbus实现modbus的主机功能 源码分享【Qt】QModbusDevice类原创 2023-06-14 10:36:58 · 70 阅读 · 0 评论 -
JSON(C++)
JSON原创 2022-06-23 16:36:38 · 306 阅读 · 0 评论 -
C++跨平台探索
sqliteSQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库原创 2022-05-31 17:26:21 · 280 阅读 · 0 评论 -
C++标准库探索
std::chronochrono是一个time library, 源于boost,现在已经是C++标准。要使用chrono库,需要#include<chrono>,其所有实现均在std::chrono namespace下。chrono是一个模版库,使用简单,功能强大,只需要理解三个概念:duration、time_point、clockC++11 std::chrono库_幽冥之花的博客-CSDN博客_std::chrono获取当前时间点的毫秒值,对std::chrono类.原创 2022-05-26 16:13:48 · 88 阅读 · 0 评论 -
C++ 高级特性
右值引用那些事儿 - 简书c++11中,能使用右值引用持续延长将亡值的寿命吗? - 知乎临时变量右值引用左常引用和右值引用都可以把临时对象的生命周期延长到与引用自身的生命周期相同。说到实现,其实是变量替换,临时变量直接被构建在引用变量的位置,生命周期自然相同了。T f() { return T{};}T&& a= f();//a继续有效被编译器看成void f(T& temp){ temp = ... 直接构造,不会走复制或移动构造函数原创 2022-05-09 16:40:52 · 440 阅读 · 0 评论 -
Windows下com及word
读写 Word日常开发的软件使用最多的应该是导出数据到Word文档中,目前可以用的方案有这几种COM 简介Microsoft 组件对象模型 (COM) 是一个独立于平台的分布式面向对象的系统,用于创建可交互的二进制软件组件。 COM 是 Microsoft 的 OLE (复合文档) 、ActiveX (Internet 组件) 等的基础技术。若要了解 COM (所有基于 COM 的技术) ,必须了解它不是面向对象的语言,而是一种标准。 用于创建在运行时进行交互的可重用的软件库。 无...原创 2022-04-21 18:47:15 · 1005 阅读 · 0 评论 -
跨平台编译
1、使用CMake进行跨平台cmake(6):适配多种操作系统编译构建以及if命令_翔底的博客-CSDN博客_cmake if(unix)如何写出优雅的跨平台的C/C++代码_芥末的无奈的博客-CSDN博客2、标志位// a.cpp#include "a.h"#ifdef _WIN32_void print_something() { printf("_WIN32_");}#ifdef _LINUX_void print_something() { pri原创 2022-04-21 11:00:17 · 1387 阅读 · 0 评论 -
C++11新特性之列表初始化
struct/class对象初始化(C++11)_幻想之渔-CSDN博客_c++11 struct 初始化C++11提供了新的初始化struct和class属性的方法,但是仅能初始化公有成员变量。代码如下:#include <iostream>#include <map>using namespace std;class Test { public: // private和protected 下面的初始化方式不可用uint32_t a;uint64_t原创 2021-10-22 16:40:50 · 139 阅读 · 0 评论 -
C++中的delete和delete[]的区别
delete 和 delete []的真正区别C++中的delete和delete[ ]的区别C++中delete和delete[]的区别原创 2021-06-23 19:06:50 · 60 阅读 · 0 评论 -
Cmake官方教程解析
原文链接CMake 教程一、介绍CMake 教程提供了一个分步指南,其涵盖了 CMake 构建过程中常见问题解决方案。查看示例项目中的各种主题如何协同工作会非常有帮助。示例的教程文档和源代码可以在 CMake 源代码树的目录Help/guide/tutorial中找到。每个步骤都有自己的子目录,其中包含可用作起点的代码。教程示例是渐进式的,因此每个步骤都为上一步提供了完整的解决方案。二、步骤1大部分项目都是从源码构建可执行文件。下面我们将以一个简单项目做为教程的起点,其需要一个只包含三行内.原创 2021-06-23 10:08:23 · 680 阅读 · 0 评论 -
CMake 教程
VSCODE CMAKE 学习Ubuntu学习心得——翻译篇——CMake教程(官方文档中文版)CMake Reference DocumentationCMake Tutorialcmake-commandscmake-generators原创 2021-06-22 16:55:28 · 1285 阅读 · 0 评论 -
nanomsg
nanomsghttps://nanomsg.org/nanomsg框架简介nanomsg使用原创 2021-06-08 13:40:03 · 269 阅读 · 0 评论 -
C++学习笔记
C++析构函数的自动调用(用于父类指针指向子类对象,内存泄漏问题)原创 2021-03-01 09:43:06 · 79 阅读 · 0 评论 -
C++右值引用
C++ && 从4行代码看右值引用 c++右值引用以及使用 深入理解C++11: 02右值引用 左值、左值引用、右值、右值引用 c++ 之 std::move 原理实现与用法总结原创 2021-01-04 16:47:32 · 97 阅读 · 0 评论 -
C++ 使用类成员函数的地址
#include <stdlib.h>#include <stdio.h> class xtest{public : void xfunc(void) { printf("hello clase func ptr !\n"); }}; typedef void (xtest::*xfunc)(void); template <typename TYPE, void(TYPE::*fptr)(void)>void* x.转载 2021-01-04 11:54:29 · 292 阅读 · 0 评论 -
C++优秀合集
fffaraz/awesome-cpp原创 2020-11-19 14:46:15 · 383 阅读 · 0 评论 -
C++ using
C++ using二 C++11中的使用1 取代typedef举例:using intvec = std::vector<int>;2 C++11中增加了继承构造函数,在其中有使用using3 成员函数隐藏场景中使用转载 2020-08-13 11:52:02 · 149 阅读 · 0 评论 -
C++ lambda表达式
C++ lambda表达式Qt connect()的第五种重载[=](){}原创 2020-08-04 17:12:13 · 109 阅读 · 0 评论 -
源代码阅读工具(understand)
源代码阅读工具(Scientific Toolworks Understand)的特色1、支持多语言:Ada, C, C++, C#, Java, FORTRAN, Delphi, Jovial, and PL/M ,混合语言的project也支持2、多平台: Windows/Linux/Solaris/HP-UX/IRIX/MAC OS X3、代码语法高亮、代码折迭、交叉跳转、书签等基本阅读功能。4、可以对整个project的architecture、metrics进行分析并输出报表。5、可以转载 2020-07-25 11:29:00 · 2707 阅读 · 0 评论 -
java中new关键字和c++中的new有什么区别
java中new关键字和c++中的new有什么区别转载 2020-07-16 19:10:41 · 229 阅读 · 0 评论 -
nullptr和NULL
nullptr是c++11中的关键字,表示空指针要区分nullptr和NULL,首先要明白NULL的含义:NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中NULL为整数0//C语言中NULL定义#define NULL (void*)0 //c语言中NULL为void类型的指针,但允许将NULL定义为0//c++中NULL的定义#ifndef NULL#ifdef _cpluscplus转载 2020-07-14 09:30:05 · 310 阅读 · 0 评论 -
C++ 类声明 类前置声明范例
1、C++ 类声明 类前置声明范例转载 2020-07-13 16:58:15 · 189 阅读 · 0 评论 -
C++友元函数和友元类(C++ friend)详解
1、C++友元函数和友元类(C++ friend)详解转载 2020-07-13 16:57:33 · 302 阅读 · 0 评论 -
C/C++的const
1、C/C++的const区别2、C++之const类成员变量,const成员函数原创 2020-07-13 09:12:25 · 128 阅读 · 0 评论 -
c++构造函数成员初始化中赋值和初始化列表两种方式的区别
先总结下:由于类成员初始化总在构造函数执行之前1)从必要性: a. 成员是类或结构,且构造函数带参数:成员初始化时无法调用缺省(无参)构造函数 b. 成员是常量或引用:成员无法赋值,只能被初始化2)从效率上: 如果在类构造函数里赋值:在成员初始化时会调用一次其默认的构造函数,在类构造函数里又会调用一次成员的构造函数再赋值 如果在类构造函数使用初始化列表:仅在初始化列表里调用一次成员的构造函数并赋值CMyClass::CMyClass() {//...转载 2020-07-13 09:02:11 · 493 阅读 · 0 评论 -
C++重写(覆盖)、重载、重定义、多态
1 重写(覆盖)override override是重写(覆盖)了一个方法,以实现不同的功能。一般用于子类在继承父类时,重写(覆盖)父类中的方法。函数特征相同,但是具体实现不同。重写需要注意:被重写的函数不能是static的,必须是virtual的 重写函数必须有相同的类型,名称和参数列表 重写函数的访问修饰符可以不同。尽管virtual是private的,派生类中重写改写为public、protect也是可以的2 重载overload overload是重载,一般是在一个类实现若转载 2020-07-11 09:49:08 · 5720 阅读 · 1 评论 -
【C++】四种强制类型转换
【C++】四种强制类型转换转载 2020-07-10 08:53:38 · 100 阅读 · 0 评论 -
Linux进程
1、【Linux】Linux进程的创建与管理2、linux之进程等待3、linux 进程等待超时原创 2020-06-04 20:46:23 · 124 阅读 · 0 评论 -
JAVA – 虚函数、抽象函数、抽象类、接口
JAVA – 虚函数、抽象函数、抽象类、接口1. Java虚函数虚函数的存在是为了多态。C++中普通成员函数加上virtual关键字就成为虚函数Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为。如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数PS: 其实C++和Java在虚函数的观点大同小异转载 2013-04-12 10:37:05 · 964 阅读 · 0 评论 -
c++(重载、覆盖、隐藏)
成员函数的重载、覆盖与隐藏成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。8.2.1 重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生转载 2013-04-12 14:13:44 · 686 阅读 · 0 评论 -
uclibc和glibc的差别
uClibc和Glibc并不相同,两者有许多不同之处,而且以下不同有可能给你带来一些问题.1.uClibc比Glibc小,虽然uClibc和Glibc在已有的接口上是兼容的,而且采用uClibc编译应用程序比采用Glibc编译应用程序要更方便,但是uClibc并没有包括Glibc中的所有接口实现,因此有些应用可能在uClibc中不能编译。2.uClibc在可配置性上比Glibc要好。3转载 2013-08-20 12:19:06 · 804 阅读 · 0 评论 -
libc与glibc的概念和区别
glibc和libc都是Linux下的C函数库,libc是Linux下的ANSI C的函数库;glibc是Linux下的GUN C的函数库;ANSI C和GNU C有什么区别呢?ANSIC是基本的C语言函数库,包含了C语言最基本的库函数。这个库可以根据 头文件划分为 15 个部分,其中包括::包含用来测试某个特征字符的函数的函数原型,以及用来转换大小写字母的函数原型;:转载 2013-08-20 11:50:52 · 1958 阅读 · 0 评论 -
Java调用C/C++编写的第三方dll动态链接库(非native API)--- JNI
注:2013年6月6日,我对该博文进行了修改,增加了源代码以及更直观详细的讲解。如果需要代码,可以到文章最后给出的链接进行下载。最近在用weka做一个数据挖掘相关的项目,不得不说,weka还是一个不错的开放源代码库,提供了很多最常用的分类和聚类算法。在我的项目中要用到一个聚类算法,Affinity Propagation(AP),由多伦多大学的Brendan J. Frey发表于200转载 2013-08-13 10:00:57 · 2659 阅读 · 0 评论 -
深入C++的new
“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A{转载 2013-11-05 10:46:12 · 751 阅读 · 0 评论 -
jar包修改并重新打包
由于需要修改下第三方jar包里面的一些逻辑,自己没有源码,使用下面的方法完成了任务:1、首先使用反编jd打开jar包,以okhttp-2.6.0.jar为例:通过菜单保存为Java源码,然后修改代码,修改完成后javac -classpath okhttp-2.6.0.jar Cache.java 编译为class文件,生成Cache.class,然后用压缩工具打开jar包,把转载 2017-08-03 09:51:01 · 1120 阅读 · 0 评论