![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows C++开发
文章平均质量分 56
huashuolin001
这个作者很懒,什么都没留下…
展开
-
什么时候重写拷贝构造函数和拷贝赋值函数
#include <iostream>#include <string>using namespace std;class CTest{public: CTest(int iData, string strData) { m_iData = iData; m_strData = strData; cout << "" << endl; } CTest(const CTest& test) { m_iDat...原创 2021-09-09 00:12:30 · 853 阅读 · 0 评论 -
C++ 关键字explicit的使用
C++中的explicit关键字只用于修饰类构造函数,且该构造函数只有一个参数,或者构造函数有n个参数,但有n-1个参数提供了默认值,。explicit的作用是表明该构造函数是显示的, 而非隐式的,不能隐式转换, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式)。首先要清楚一个概念——对象构造时的隐式转换。通过下面的示例,来了解下对象构造时的隐式转换#include <iostream>using namespa原创 2021-09-01 10:43:15 · 861 阅读 · 0 评论 -
使用windeployqt自动将使用qt开发的exe所需的依赖文件( 包含dll等)导入到exe目录下
使用qt开发exe时,编写好程序编译后得到一个exe文件,而这个exe文件往往需要依赖Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll等动态库。如果手动将依赖的文件一个个拷贝到程序目录下,不仅耗时还容易出错(特别是如果在开发者本地电脑一个个将所需要的文件拷贝到程序目录下后运行没问题后,该程序在其他人电脑上运行仍存在缺少依赖库的情况(因为开发者电脑上的由于开发需要往往安装开发套件更多、系统环境变量等设置的路径更多))。使用qt官方提供的windeployqt可以自动将使用qt开发原创 2021-02-20 19:45:05 · 843 阅读 · 0 评论 -
话说笔记(V1.0.0)的设计和实现
总体介绍话说笔记(WordsNote)1.0版本为单机版,即不需要联网,数据等都存储在本地。主要使用QT开发完成。主要功能是以日记的方式记录数据以及以文档的方式记录数据,支持多用户(即多个用户的注册、登陆)。以日记的方式记录数据,即按照日期记录数据,其中具有日历最后要加一张截图以文档的方式记录数据,即最后要加一张截图实现涉及到的技术Qt相关:QtreeView,信号槽,QTextEdit(主要涉及文本格式)数据库:sqlite表结构设计...原创 2021-02-15 16:03:46 · 2272 阅读 · 3 评论 -
好记性不如烂笔头1——基类的析构函数要声明为虚函数
析构函数要声明为虚函数原创 2020-12-29 16:22:59 · 308 阅读 · 0 评论 -
C++文件及文件夹操作整理(代码示例)
windows写文件DWORD dwReturn;std::string strIamgePath = m_strImageTempPath + GUID_Generator() + ".jpg";HANDLE hFile = CreateFileA(strIamgePath.c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);WriteFile(hFile, pAl原创 2020-11-19 16:48:05 · 3092 阅读 · 5 评论 -
一图了解Windows下进程间通信的8种方法
原创 2020-08-26 19:24:05 · 426 阅读 · 0 评论 -
Windows下QT设置应用程序(exe)图标、任务栏托盘图标、任务栏窗口图标
无原创 2020-08-11 18:47:39 · 10722 阅读 · 0 评论 -
Visual Studio开发使用技巧
1. 前言工欲善其事,必先利其器。想要提升开发效率,熟练掌握ide的基本使用十分重要,而掌握ide提供的各种方便快捷功能,更是能够在开发过程中达到事半功倍的效果。Visual Studio作为一款十分强大的集成开发环境,提供了各个各样的能力给开发者,其中有些功能不易被发现,而这些掌握这些功能,恰恰可以很大的提升开发效率。本文总结了8个十分便捷高效的VS开发使用技巧,希望这些总结分享能够帮助到使用VS进行开发的开发人员。2. Visual Studio开发使用技巧2.1 神奇的工具箱VS提原创 2020-08-02 15:56:03 · 1288 阅读 · 0 评论 -
编程时遇到代码在不同电脑上中文显示有的正常,有的是乱码的情况的问题原因
编程时遇到代码在在不同电脑上中文显示有的正常,有的是乱码的情况关于这个问题,首先要明确一点,每个文本文件都有自己的编码格式,每台电脑在编辑文字的时候就采用了自己的默认编码格式把数据写入到文件中。而不同电脑或者不同编译器默认的编码格式不同会造成同样的文字内容写入到文件的二进制内容是不一样的。比如下面的示例,test1.txt和test2.txt内文本内容同样是“这是测数据”,但是test1....原创 2020-05-05 20:17:08 · 3202 阅读 · 0 评论 -
跨平台编程(三)——VisualGDB
VisualGDB的功能介绍环境:VS2008 +VisualGDB5.1.61. 安装VisualGDB既下载安装VisualGDB,并激活。2. 创建VisualGDB工程1)文件->新建->项目,选择VisualGDB->Linux Project Wizard,填写好项目名称、及位置后,点击确定,如图ps:第一次创建的时候,...原创 2020-05-05 19:16:43 · 1629 阅读 · 0 评论 -
C++从代码到可执行程序
1. 从代码到可执行程序的执行无论是windows操作系统还是linux操作系统,C++编写代码到可执行程序的执行,都经过了预处理、编译、汇编、链接、运行5个步骤。有时候我们也将预编译、编译和汇编统称为编译。下面分别介绍这5个步骤预处理预处理过程进行的操作:1. 将所有的“#define”删除,并且展开所有的宏定义2. 处理所有的条件编译指令,比如“#if”、“#ifdef”、“...原创 2019-10-28 16:52:00 · 1705 阅读 · 0 评论 -
C++使用openssl对数据进行加解密
1. openssl库文件及头文件的获取获取openssl库文件及头文件有两种方式:1)下载OpenSSL源代码并由自己编译后使用2)下载已编译好的安装包,安装后直接可以得到openssl的库文件及头文件使用第一种方法获取,过程十分繁琐,同时编译过程中可能产生各种各种的问题,因此这里使用第二种方法获取openssl库文件及头文件。下载安装包(https://slproweb.c...原创 2019-09-05 14:15:38 · 8072 阅读 · 3 评论 -
C++基本数据类型、结构体、类、联合内存占用(三)——联合
定义及规则当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构; 2)它的所有成员相对于基地址的偏移量都为0; 3)此结构空间要大到足够容纳最"宽"的成员;4)其对齐方式要适合其中所有的成员;验证程序#inc...原创 2019-09-01 18:53:33 · 244 阅读 · 0 评论 -
C++基本数据类型、结构体、类、联合内存占用(二)——结构体、类
C++类和结构体内存占用方式相同类的内存占用规则(1)空类大小为1,因为C++标准规定空类也可以实例化,每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址;(2)类的大小为非静态成员数据的类型大小之和,静态成员存放在全局数据段,不影响类实例化的大小;(3)类本身的一些特性占用的大小,虚函数表...原创 2019-08-30 15:19:39 · 302 阅读 · 0 评论 -
C++基本数据类型、结构体、类、联合内存占用(一)——基本数据类型
基本数据类型VS下基本数据类型占用内存如下表PS:很多书籍及博客介绍,64位编译环境long占8个字节,这个介绍太过于笼统。基本数据类型占用的内存和编译器有关(要看编译器厂商如何实现)。long在VS、64位编译环境下占用4个字节。基本数据类型 数据类型 x86占用内存(单位:字节) x64占用内存(单位:字节) char 1 1 short 2...原创 2019-08-21 19:23:43 · 261 阅读 · 0 评论 -
更改Visual Assist的Cache存放目录
使用Visual Assist的时候,Visual Assist会在电脑上产生缓存文件(保存以前的项目中的解析索引文件等),且较大,默认缓存目录存放在C盘(一般目录为:C:\Users\用户名\AppData\Local\VisualAssist),会占用C盘较大空间(一般情况下会有几个G)。可通过修改注册表的方式,修改该缓存路径的默认位置。修改方法如下:运行regedit,打开注册表...原创 2018-08-10 13:38:47 · 3179 阅读 · 0 评论 -
预编译头的理解
1. 概念所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是proje...原创 2018-03-24 14:24:12 · 2154 阅读 · 0 评论 -
使用windbg查看程序崩溃处
1. 打开windbg2. 设置符号文件路径打开File>Symbol File Path,输入pdb所在文件的目录,如图:2. 打开dump文件,如图4. 输入命令:!analyze -v 然后回车,就会出现分析结果,如图:...原创 2017-09-22 15:35:36 · 2818 阅读 · 0 评论 -
记录Windows下文件操作记录
在Windows下,有时会遇到有些文件或者文件夹丢失的问题,不知道是谁,什么时候,哪个程序把文件或者文件夹删除。特别是开发者遇到自己用于存储的文件丢失,不知是自己程序导致还是其他程序或者病毒导致。此时采用下面的方法,可以使用Windows日志,记录文件或者文件夹的操作记录。一设置通过启用文件夹的审核和审核策略就能够记录相应的日志,具体步骤如下:1.确保盘的格式为NT...原创 2017-08-27 10:54:44 · 70627 阅读 · 4 评论 -
运行Dump文件,查看问题
产生Dump文件后,将对应的pdb文件(即那个组件会产生这个Dump问题,就是编译出这个组件时产生的pdb文件)和dump文件放在同一目录下,然后用VS2008等编译器打开这个dump文件(双击Dump文件即可)。然后运行,就可以看到是在代码的哪个地方产生崩溃了...原创 2016-11-10 16:44:18 · 2200 阅读 · 0 评论 -
dump文件调试技巧(产生Dump文件)
主函数:#include "stdafx.h"#include "DumpFile.h"int _tmain(int argc, _TCHAR* argv[]){ //SetUnhandledExceptionFilter(); DeclareDumpFile(); int aTemp = 1; aTemp++; int *p = NULL;...原创 2016-09-06 11:11:37 · 1355 阅读 · 0 评论 -
跨平台编程(跨Windows/Linux)(一)——定义及要求
1. 何为跨平台?一份代码,在Windows上可以编译、运行,在Linux上也可以编译和运行,则称此代码是可以跨平台的。2. 特点1)同一份代码,无需改动2)运行结果相同3. 跨平台代码的要求1)尽量使用标准函数/类型/语法 如,ANSI C/STL,是各个平台都支持的函数; char/short/int/double/float,这些类型各平台都支持。...原创 2019-03-14 23:28:24 · 4547 阅读 · 0 评论 -
IE插件开发注意事项
现象:本人在开发IE插件时遇到一个问题就是:下载文件(通过HTTP或者FTP),下载成功,但是找不到文件的位置,用process monitor追踪发现,下载到了C:\Users\aaa\AppData\Local\Microsoft\Windows\Temporary Internet Files\Virtualized\C\User\aaa\Desktop\Test\77.txt(而我实际想下...原创 2016-04-24 18:32:02 · 541 阅读 · 0 评论 -
跨平台编程(二)——SAMBA目录共享
SAMBA:是在Linux和UNIX系统上实现SMB协议的一个免费软件。使用它可实现:在Linux服务器上设置一个共享目录,让Windows主机上可以访问(rw)这个目录。环境:centos6.71. 安装sambayum install samba samba-client samba-swat备注:这三个都要安装2. 关闭selinux(一个强化的安全子系统)和firewa...原创 2019-05-15 14:38:35 · 611 阅读 · 0 评论 -
vs系列集成开发环境使用的编译器cl和链接器link
源代码到最终的程序生成,之间经历了编译、链接的过程。但是vs系列集成开发环境,为了方便程序员工作,将编译链接过程都隐藏起来,只需选择工程,右击,点击“生成”,即可生成exe、dll、lib等文件。然要做到知其然,知其所以然,要知道vs系列集成开发环境使用了那种编译器、哪种链接器,经过了怎样的编译链接过程,从而生成最终的文件。编译器:cl(cl.exe)链接器:link(link.exe)...原创 2018-09-04 16:50:41 · 2873 阅读 · 0 评论 -
Visual Studio——使用多字节字符集与使用Unicode字符集
vs配置选项“使用多字节字符集”和“使用Unicode字符集”的区别VS集成开发环境,字符集选择“使用多字节字符集”和“使用Unicode字符集”的直接区别就是:编译器是否增加了宏定义——UNICODE。当选择“使用Unicode字符集”时,编译器会增加宏定义——UNICODE;而选择“使用多字节字符集”时,编译器则不会增加宏定义——UNICODE。而是否增加了宏定义UNICODE,则...原创 2019-07-23 19:58:42 · 21458 阅读 · 5 评论 -
vs在调试过程中修改变量的值
在linux下使用gdb调试程序的时候,可以使用“set variable key = value”或者“print key=value”命令修改调试过程中变量的值,方便我们灵活调试程序。在vs开发环境下,也可以在调试过程中修改变量的值。方法如下在VS能够单步调试,查看到变量的值的前提下,打开局部变量窗口,如下修改局部变量窗口中,变量的值,如下最终程序运行结果,如下...原创 2019-07-24 18:56:19 · 10834 阅读 · 0 评论 -
C++通过IO完成端口实现线程池(包含实现原理及实现源代码)
线程池的定义及其原理线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。 例如,线程数一般取cpu数量+2比较合适,线程...原创 2020-07-09 23:11:43 · 1361 阅读 · 0 评论 -
常成员函数——const修饰符修饰的成员函数(函数后面加const)
常成员函数,是指由const修饰符修饰的成员函数,在常成员函数中不得修改类中的任何数据成员的值。常成员函数表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用),唯一的例外是对于mutable修饰的成员。常成员函数示例class CTest2{public: int GetVa...原创 2019-07-31 17:10:57 · 1362 阅读 · 0 评论 -
windows C++执行bat脚本时,隐藏cmd(dos)窗口
用C++代码执行bat脚本或者cmd命令时,如何避免cmd窗口一闪而过或者cmd窗口打开停留?可使用函数WinExec完成功能,格式如下:WinExec("cmd /c 文件名.bat", SW_HIDE);或者WinExec("cmd /c cmd命令", SW_HIDE);其中第一个参数中,cmd /c命令表示执行完命令后关闭命令窗口(与之对应的是cmd /k 表示执行完命...原创 2018-08-27 17:04:28 · 7786 阅读 · 2 评论