![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 78
西_瓜_瓜
《黑客帝国》的代码世界
展开
-
MQTT遥测传输协议的简介与使用
MQTT (Message Queue Telemetry Transport),翻译成中文就是,遥测传输协议,其主要提供了订阅/发布两种消息模式,更为简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发,属于物联网(Internet of Thing)的一个标准传输协议...原创 2020-05-12 11:24:49 · 448 阅读 · 0 评论 -
Windows下C/C++模拟鼠标点击,没有鼠标怎么获取鼠标坐标、移动鼠标坐标、模拟鼠标点击事件?方法二 亲测有效
在使用PC端开发应用时,没有鼠标设备的情况下实现由一个前台程序触发来实现底层程序的触发,如模拟鼠标的点击事件,键盘等模拟鼠标操作 mouse_event是比较旧的API,新的API名为SendInput if (key == KZS_KEY_ENTER) { //点击 MouseMove(100, 100); MouseLeftDown(); Sleep(10); Mou...原创 2020-04-26 18:25:37 · 1635 阅读 · 0 评论 -
Windows下C/C++模拟鼠标点击,PC端没有鼠标设备也能够获取鼠标坐标、移动鼠标坐标、模拟鼠标点击事件,方法一 亲测有效
在使用PC端开发应用时,没有鼠标设备的情况下实现由一个前台程序触发来实现底层程序的触发,比如模拟鼠标的点击事件,键盘事件等移动鼠标坐标SetCursorPos(100,200) 设置鼠标当前位置。坐标以屏幕的左上角为原点,单位是像素点。在Windows SDK中的函数原型: 引入头文件#include <Windows.h>就可以使用这个函数BOOL SetCursorPo...原创 2020-04-26 17:54:35 · 3361 阅读 · 3 评论 -
C/C++基础知识整理汇总
1、程序的内存分配(1)栈区(stack) 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。(2)堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。(3)**全局区(静态区)(static)**全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区...原创 2020-04-25 17:06:09 · 612 阅读 · 0 评论 -
C++基础8:单例模式
单例的介绍:意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。关键代码:构造函数是私有的。应用实例:Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以...原创 2020-03-29 12:40:21 · 205 阅读 · 0 评论 -
C++基础4:构造函数、析构函数、拷贝析构函数、静态成员函数
【构造函数】1.1构造函数:一个特殊的函数与类型名相同,没有返回值类型,保证创建一个对象时,自动调用一次,一个类可以有多个构造函数作用:初始化对象如果一个类不提供构造函数,则系统自动提供一个无参构造函数,但一旦提供构造函数,则系统的无参构造自动消失。1.2一个对象的创建过程根据对象大小,分配内存,如果类的成员变量是基本类型,则什么都不做;如果是类类型的成员,则去构造它,调用原创 2020-03-29 12:19:21 · 390 阅读 · 0 评论 -
C++基础2:结构体、联合体、枚举 几个基本概念的区别
【struct】结构体 类型定义:由一系列具有相同数据类型和不同数据类型的数据组成的数据集合。 类型定义格式: struct worker { char name[10]; int age; float salary; struct worker *next;原创 2020-03-29 12:19:06 · 454 阅读 · 0 评论 -
C++智能指针使用
由于C++语言没有自动内存回收机制,程序员每次new出来的内存都要手动delete。程序员忘记delete,流程太复杂,最终导致没有delete,异常导致程序过早退出,没有执行delete的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、原创 2020-03-29 12:18:39 · 263 阅读 · 0 评论 -
C++基础7:10大标准容器
标准容器(十大容器)1、线性容器:向量(vector)、列表(list)、双端队列(deque)2、适配器容器:堆栈(stack)、队列(queue)、优先队列(priority_queue)3、关联容器:映射(map) 、多重映射(mutimap) 、集合(set) 、 多重集合(mutiset)STL,以模板为基础容器:提供统一的访问接口,泛型化的数据结构迭原创 2017-03-06 21:40:04 · 2952 阅读 · 0 评论 -
C++基础6:虚函数、纯虚函数
1、概念 虚函数:为了允许用基类的指针来调用子类的这个函数,子类可以重写父类的虚函数。纯虚函数:为了实现一个接口,起到一个规范的作用,规范继承的子类必须实现这个函数。纯虚函数不可实例化对象 2、实例化对象有纯虚函数的类是不可能生成类对象的,如果没有纯虚函数则可以。比如: class CA { public: virtual void原创 2017-03-06 01:38:15 · 537 阅读 · 0 评论 -
Google开源C++单元测试框架gTest 8:编写简单的测试框架
一、前言上一篇我们分析了gtest的一些内部实现,总的来说整体的流程并不复杂。本篇我们就尝试编写一个精简版本的C++单元测试框架:nancytest ,通过编写这个简单的测试框架,将有助于我们理解gtest。二、整体设计使用最精简的设计,我们就用两个类,够简单吧:1. TestCase类包含单个测试案例的信息。 2. UnitTest类原创 2017-02-25 22:42:54 · 391 阅读 · 0 评论 -
Google开源C++单元测试框架gTest 7:深入探索gTest
一、前言“深入解析”对我来说的确有些难度,所以我尽量将我学习到和观察到的gtest内部实现介绍给大家。本文算是抛砖引玉吧,只能是对gtest的整体结构的一些介绍,想要了解更多细节最好的办法还是看gtest源码,如果你看过gtest源码,你会发现里面的注释非常的详细!好了,下面就开始了解gtest吧。二、从TEST宏开始前面的文章已经介绍过TEST宏的用法了,通过TEST原创 2017-02-25 22:40:38 · 496 阅读 · 0 评论 -
Google开源C++单元测试框架gTest 6:运行参数
一、前言使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的控制。二、基本介绍前面提到,对于运行参数,gtest提供了三种设置的途径:1. 系统环境变量2. 命令行参数3. 代码中指定FLAG原创 2017-02-25 22:38:21 · 746 阅读 · 0 评论 -
Google开源C++单元测试框架gTest 5:死亡测试
一、前言“死亡测试”名字比较恐怖,这里的“死亡”指的的是程序的崩溃。通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时我们就需要检查程序是否按照预期的方式挂掉,这也就是所谓的“死亡测试”。gtest的死亡测试能做到在一个安全的环境下执行崩溃的测试案例,同时又对崩溃结果进行验证。二、使用的宏Fatal assertionN原创 2017-02-25 22:37:09 · 934 阅读 · 0 评论 -
C++函数用法1:回调函数
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用。回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口。异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)原创 2017-02-19 20:21:01 · 682 阅读 · 0 评论 -
C++智能指针总概括
由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。如果程序员忘记 delete或者流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见,这样就会导致内错泄露。智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露原创 2017-02-19 22:09:35 · 562 阅读 · 0 评论 -
C++智能指针:unique_ptr
1、智能指针概念智能指针是基于RAII机制实现的类(模板),具有指针的行为(重载了operator*与operator->操作符),可以“智能”地销毁其所指对象。C++11中有unique_ptr、shared_ptr与weak_ptr等智能指针,可以对动态资源进行管理2、unique_ptr的基本操unique_ptr“唯一”拥有其所指对象,同一时原创 2017-02-19 22:36:56 · 446 阅读 · 0 评论 -
C++基础1:4种类型转换
C++的类型算是C++比较基础的知识了,写在这当个笔记,方便复习。类型转换有C的风格,比如 type b = (int)a,简单粗暴,可以在任意类型之间转换。缺点是:转换之间太简单,出错不易查找C++中引入了4个新型的转换操作符:static_cast、const_cast、dynamic_cast、reintpret_caststatic_cast类似于C风格的强制转原创 2017-02-28 23:52:14 · 518 阅读 · 0 评论 -
C++基础2:结构体、联合体、枚举
【struct】结构体 类型定义:由一系列具有相同数据类型和不同数据类型的数据组成的数据集合。 类型定义格式: struct worker { char name[10]; int age; float salary; struct worker *next;原创 2017-03-01 23:08:33 · 579 阅读 · 0 评论 -
C++基础3:函数的重载
1、在同一作用域,函数名相同,参数列表不同的函数构成重载关系参数列表不同:个数顺序类型2、函数重载的原理C函数在进行编译时,编译器只考虑函数的名字C++函数在编译时,编译器不但要考虑函数名,还会考虑参数列表3、函数的哑元一个函数的参数,只有类型,没有形参名,这个参数就叫哑元void show(void)void show(int)vo原创 2017-03-01 23:50:35 · 319 阅读 · 0 评论 -
C++基础4:构造函数、析构函数、拷贝构造函数、静态成员函数
【构造函数】1.1构造函数:一个特殊的函数与类型名相同,没有返回值类型,保证创建一个对象时,自动调用一次,一个类可以有多个构造函数作用:初始化对象如果一个类不提供构造函数,则系统自动提供一个无参构造函数,但一旦提供构造函数,则系统的无参构造自动消失。1.2一个对象的创建过程根据对象大小,分配内存,如果类的成员变量是基本类型,则什么都不做;如果是类类型的成员,则去构造它,调用原创 2017-03-02 00:16:12 · 554 阅读 · 0 评论 -
C++基础5:C++三大特征封装、继承、多态
1、封装该隐藏的隐藏,该公开的公开,public、private、protected作用:便于分工和共同开发,防止不必要的扩展2、继承作用:代码和数据的复用,在已有的数据和代码上进行扩展2.1 继承的方式公开继承:class A:public B{};保护继承:class A:protected B{};私有继承:class A:privat原创 2017-03-03 00:28:33 · 273 阅读 · 0 评论 -
Google开源C++单元测试框架gTest 2:gTest断言
一、前言这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是:1. ASSERT_* 系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)。 2. EXPECT_* 系列的断言,当检查点失败时,继续往下执行。二、示例// i原创 2017-02-25 22:30:35 · 477 阅读 · 0 评论 -
Google开源C++单元测试框架gTest 3:消息机制
一、前言gtest提供了多种事件机制,非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种:1. 全局的,所有案例执行前后。2. TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。3. TestCase级别的,每个TestCase前后。二、全局事件要实现全局事件,必须写一个类,继承testing:原创 2017-02-25 22:33:20 · 402 阅读 · 0 评论 -
Google开源C++单元测试框架gTest 1:gTest安装编译
一、前言本篇将介绍一些gtest的基本使用,包括下载,安装,编译,建立我们第一个测试Demo工程,以及编写一个最简单的测试案例。 二、下载如果不记得网址, 直接在google里搜gtest,第一个就是。目前gtest的最新版本为1.3.0,从下列地址可以下载到该最新版本:http://googletest.googlecode.com/files/gtest原创 2017-02-25 22:26:51 · 1601 阅读 · 0 评论 -
Google开源C++单元测试框架gTest 4:参数化
一、前言在设计测试案例时,经常需要考虑给被测函数传入不同的值的情况。我们之前的做法通常是写一个通用方法,然后编写在测试案例调用它。即使使用了通用方法,这样的工作也是有很多重复性的,程序员都懒,都希望能够少写代码,多复用代码。Google的程序员也一样,他们考虑到了这个问题,并且提供了一个灵活的参数化测试的方案。二、旧的方案为了对比,我还是把旧的方案提一下。首先我先把被测原创 2017-02-25 22:35:37 · 892 阅读 · 0 评论 -
_declspec(dllexport)和_declspec(dllimport)的区别
_declspec(dllexport)和_declspec(dllimport)都是DLL内的关键字,即导出与导入。他们是将DLL内部的类与函数以及数据导出与导入时使用的。_declspec(dllexport)dllexport是在这些类、函数以及数据的申明的时候使用。(dllexport)是把DLL中的相关代码(类,函数,数据)暴露出来为其他应用程序使用。使用了(dlle原创 2017-01-20 01:07:24 · 779 阅读 · 0 评论