C++
文章平均质量分 82
liulihuo_gyh
这个作者很懒,什么都没留下…
展开
-
rand函数和srand函数
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。rand(产生随机数)表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND转载 2012-10-26 09:33:32 · 377 阅读 · 0 评论 -
win32应用程序跟win32控制台应用程序
win32应用程序和win32控制台应用程序 win32应用程序是有窗体的(当然也可以没有),有Windows消息循环机制的。而win32控制台应用程序只是在控制台下运行的程序,类似以前dos的程序。Win32 Application和Win32 Console Application 都是工作在32位Windows环境的程序。 其中Win32 Application 就转载 2016-03-09 16:57:37 · 690 阅读 · 0 评论 -
Windows静态库和动态库的创建和使用
偶们在实际的编程开发中,经常会遇到运行时无法找到某个DLL文件或者链接时无法找到某个LIB文件。然后,我们就开始乱GOOGLE一下,然后将VS2005的设置改变一下,或许就Ok了,我们将别人开发的DLL或者LIB导入到我们的编程中,那么这些lib,DLL到底是什么呢?下面,偶就细细道来。 首先,偶们说第一个:静态链接库(Static Libary)偶们用VS2005做一个静态链接库先转载 2016-03-13 22:28:31 · 331 阅读 · 0 评论 -
为什么构造函数不能为虚函数
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数转载 2017-03-10 11:32:05 · 265 阅读 · 0 评论 -
类的大小
初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟就是我在学习编程过程中的一点经验,是编译器这方面的一个具体功能.首先:我们要知道什么是类的实例化,所谓类的实例化就是在内转载 2017-03-13 15:47:56 · 247 阅读 · 0 评论 -
Qt 开启进程,查找进程,关闭进程
#include #include 1, 开启进程QString path = qApp->applicationDirPath() + "/../../tools/redis/redis-server.exe";QStringList args;bool ret = QProcess::startDetached(path);if (!ret){QMe原创 2017-09-28 09:59:09 · 5809 阅读 · 0 评论 -
Qt 屏蔽系统按键、任务管理器、任务栏、鼠标,修改注册表
.h#ifndef CHOOK_H#define CHOOK_H#include #include /************************************************************************//* 钩子类,屏蔽系统热键 author: liulihuo date : 2017/9/26*//*********原创 2017-09-28 23:31:32 · 3362 阅读 · 0 评论 -
Qt 之 QJsonDocument 解析json 数据
QJsonDocument是Qt操作JSON数据的中心类。它的公有函数如下:[cpp] view plain copy QJsonDocument() QJsonDocument(const QJsonObject & object) QJsonDocument(const QJsonArray &转载 2017-09-29 22:48:00 · 6490 阅读 · 0 评论 -
std::function的本质和使用特性
原文连接: http://blog.csdn.net/han1558249222/article/details/504114421.仿函数:又叫std::function,是C++中的一个模板类2.C语言中的函数指针:int add(int a,int b){ return a+b;}typedef int (*func)(int,转载 2017-10-24 09:35:53 · 427 阅读 · 0 评论 -
fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
问题说明:当安装VS2012之后,原来的.NET 4.0会被替换为.NET 4.5。卸载VS2012时,不会恢复.NET 4.0。l 当VS2012安装后,VS2010的cvtres.exe就无法使用了。如果你的PATH环境变量中VS2010的工具路径第一个出现,而且链接器需要将.res文件转换为COFF 对象格式,就会导致LNK1123错误。l 当VS生成PE文件头时,使用的cvtres转载 2017-11-21 17:09:08 · 331 阅读 · 0 评论 -
二进制转十进制快速方法
http://blog.163.com/kongdelu2009@yeah/blog/static/111995207201037105051259/如果你是搞网络的,我觉得你一定要记住以下几种二进制数的转换值。你是一个网络工程 师,当看到一串二进制数时,你不要告诉我你会拿出笔纸或掰手指算半天才知道它转化成十进制的数值。要想快,那就记下下面几种常见的二进制--十进制转换:转载 2018-01-22 17:01:17 · 31236 阅读 · 3 评论 -
使用lambda表达式
c11新特性中加入了lambda表达式,所以Qt 也支持需在.pro文件中加入CONFIG += c++11例子: 1 QString program = "C:/Windows/System32/cmd.exe"; 2 QStringList arguments; 3 arguments "/c" "dir" "C:\\"; 4 QPr转载 2018-03-23 11:02:17 · 1072 阅读 · 0 评论 -
_cdecl/_stdcall/_fastcall/_thiscall 简介
_stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针。这些堆栈中的参数由被调用的函数在返回后清除,使用的指令是 retnX,X表示参数占用的字节数,CPU在ret之后自动弹出X个字节的堆栈空间。称为自动清栈。函数在编译的时候就必须确定参数个数,并且调用者必须严格的控制参数的生成,不能多,不能少,转载 2018-03-21 11:34:03 · 1077 阅读 · 0 评论 -
函数命名规则及调用约定:__stdcall,__cdecl,__fastcall,thiscall,naked call
1. 被这些修饰关键字修饰的函数,其参数都是从右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,但不同的是函数名的修饰部分(关于函数名的修饰部分在后面将详细说明)。_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。转载 2018-03-21 11:36:30 · 431 阅读 · 0 评论 -
用函数指针简化if/else switch/case
开发中常遇到一族同类型函数的处理调用情况,开始时候简单情况就使用if / else 处理,等分支情况越来越多事,代码看起来就很长且不易维护,这种时候可以考虑使用函数指针映射来简化代码。#include <iostream>#include <map>using namespace std;class A;typedef void (A::*Call)(string)...原创 2018-04-10 16:41:25 · 892 阅读 · 0 评论 -
C++中POD类型
原文:http://www.cnblogs.com/tracylee/archive/2012/10/18/2730164.html在imperfect c++里, 书里是这样解释POD的: 1、 所有标量类型(基本类型和指针类型)、POD结构类型、POD联合类型、以及这几种类型的数组、const/volatile修饰的版本都是POD类型。 2、 POD结构/转载 2018-03-29 11:13:53 · 338 阅读 · 0 评论 -
VSgoogle代码规范检查工具cpplint
原文 https://www.jianshu.com/p/64aa95820165其实 VS 是一款高大上的 IDE ,想逐步调试啊、进入函数什么的都很方便,今天就专门发个关于如何使 VS 更加方便我们使用的教程吧=。=所用版本:VS2013由于谷歌风格的检查文件cpplint.py(上去复制下来保存为.py就好啦 )是Python来运行的,所以首先我们需要一个python~ (PS: 版本不能...转载 2018-04-18 11:39:10 · 6634 阅读 · 1 评论 -
C/C++大文件/数据网络传输方法总结
原文: https://www.2cto.com/kf/201401/273290.html在C/C++网络编程中不免会遇到需要传输大数据、大文件的情况,而由于socket本身缓冲区的限制,大概一次只能发送4K左右的数据,所以在传输大数据时客户端就需要进行分包,在目的地重新组包。而实际上已有一些消息/通讯中间件对此进行了封装,提供了直接发送大数据/文件的接口;除此之外,利用转载 2018-05-03 14:58:09 · 5058 阅读 · 0 评论 -
函数调用方式__stdecl _stdcall _fastcall __thiscall介绍
__cdecl 是C DECLaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 _stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,转载 2016-03-18 10:43:06 · 441 阅读 · 0 评论 -
windows下boost库的基本使用方法
因为boost都是使用模板的技术,所以所有代码都是写在一个.hpp头文件中。这样boost中的大部分内容是不需要编译生成相应的链接库,只需要设置下面的包含目录(或者设置一下环境变量),在源文件中包含相应的头文件就可以使用了。少部分库需要生成链接库来使用。下面介绍完整安装boost库的方法:1、首先到boost官网去下载最新的版本的boost库:http://www.boos转载 2016-03-16 09:37:15 · 878 阅读 · 0 评论 -
C语言中11种赋值运算符的具体含义
1.= 赋值运算符 变量=表达式 如:a=3;将a的值赋为32./= 除后赋值 变量/=表达式 如:a/=3;即a=a/33.*= 乘后赋值 变量*=表达式 如:a*=3;即a=a*34.%= 取模后赋值 变量%=表达式 如:a%=3;即a=a%35.+= 加后赋值 变量+=表达式 如:a+=3;即a=a+36.-= 减后赋值 变量-=表达式 如:a-=3转载 2012-10-26 09:31:20 · 1917 阅读 · 0 评论 -
C++文件读写总结 .
在C++中如何实现文件的读写?作者: infobillows 发表日期: 2007-04-03 21:33 点击数: 465一、ASCII 输出为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用取代,所有的C++标准头文件都是无后缀的。)。这是 的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件,转载 2012-11-08 13:48:36 · 282 阅读 · 0 评论 -
静态成员和非静态成员的区别
静态和非静态在网上收集了很多资料,总结了下,如果小弟那里纰漏和错误希望各位大哥指点。数据成员可以分静态变量、非静态变量两种.静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员转载 2012-11-15 09:09:06 · 541 阅读 · 0 评论 -
静态成员函数调用非静态成员变量
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,转载 2012-11-15 08:36:23 · 534 阅读 · 0 评论 -
关于VCPROJ文件的说明
vcproj文件是vs08或vs05的工程文件,而sln文件为vs08或vs05的的项目文件。vcproj的具体格式为xml格式,其中包含三个主要的节:platform,configuration,Filesplatform:描述的只是x64,x86等不同的平台。configuration:描述的是编译和链接器的环境配置信息。可以通过vs08或者vs转载 2013-07-09 09:31:38 · 884 阅读 · 0 评论 -
单例模式——C++实现自动释放单例类的实例
C++编程语言是一个应用广泛的计算机应用语言,它功能强大,在一定程度上大大提高了程 序开发效率。C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共 享。有很多地方需要这样的功能模块,如系统的日志输出等。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。定义一个转载 2013-07-24 19:54:52 · 760 阅读 · 0 评论 -
c++四种类型转换
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多转载 2013-11-22 15:36:57 · 531 阅读 · 0 评论 -
触发断点,堆被损坏问题
今天调试时总是出现这个问题, 发现程序中有两个cpp文件当中的结构体定义的名称都一样, 名字改掉就没事了, 暂时不太理解原理 先记录下来原创 2015-04-13 17:11:34 · 1083 阅读 · 0 评论 -
友元类和友元函数
友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),转载 2015-07-21 10:48:25 · 396 阅读 · 0 评论 -
转:深入理解面向对象设计的七大原则
一.面向对象设计的七大原则是什么?1.开放封闭原则 2.里氏转换原则 3.依赖倒转原则 4.组合/聚合原则 5.接口隔离原则 6.“迪米特”法则 7.单一职责原则 二.七大原则是什么含义?序号 面向对象设计七大原则 偶的理解 1 开放封闭原则 面向扩展开放,面向修改关闭 2 里氏转换原则 超类存在的地方,子类是可以替换的 3 依赖倒转原则 实现尽量依赖抽象,不依赖转载 2015-10-16 11:46:20 · 525 阅读 · 0 评论 -
volatile关键字
1.使用volatile关键字修饰的变量,可以避免编译器优化; 2.使用volatile关键字修饰的变量,每次都是重新读取内存中的值,而不是使用保存在寄存器里的值了; 3.编译器优化的做法是: int i = 5; int a = i; …… int b = i; 编译器发现两次从i读数据的代码之间,并没有对i进行过操作,它会自动把上次读的数据放在b中,而不是重新从i里面读。转载 2015-10-16 12:10:21 · 386 阅读 · 0 评论 -
使用内存检测工具VLD遇到的问题
Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。可以得到内存泄漏点的调用堆栈,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。下载地址 http://www.codeproject.com/tools/visualleakdetector.asp下载最新版直接按原创 2015-10-19 14:37:44 · 965 阅读 · 0 评论 -
VC2010中"Include Directories" 和 "Additional Include Directories"的区别
右键一个Project,可以发现有两个地方设置Include的相关目录:VC++ Directories -> Include DirectoriesC/C++ -> General -> Additional Include Directories不知道具体有什么区别,后在MSDN上得到答案:“VC++ Directories -> Include Directories” : Direct转载 2015-11-09 14:53:41 · 992 阅读 · 0 评论 -
VS调试Qt程序时查看变量显示地址值问题解决
1,方法一: 查看Qt vs-addin插件是否安装或版本是否正确,重装插件解决2,VS Release模式调试 改 Debug 模式调试3, 取消16进制显示4, 工具-导入导出设置-重置所有设置原创 2015-11-11 11:34:31 · 3530 阅读 · 1 评论 -
Delphi InterlockedIncrement/InterlockedDecrement
用于增减变量的并不是常用的Inc/Dec过程,而是用了InterlockedIncrement/InterlockedDecrement这一对过程,它们实现的功能完全一样,都是对变量加一或减一。但它们有一个最大的区别,那就是InterlockedIncrement/InterlockedDecrement是线程安全的。即它们在多线程下能保证执行结果正确,而Inc/Dec不能。或者按操作系统理论中的转载 2015-10-11 23:17:11 · 1344 阅读 · 0 评论 -
多继承的构造顺序
构造对象的规则需要扩展以控制多重继承。构造函数按下列顺序被调用: (1)任何 虚拟基类的构造函数按照它们被继承的顺序构造;(#add 即声明顺序) (2)任何非虚拟基类的构造函数按照它们被继承的顺序构造; (3)任何成员对象的构造函数按照它们声明的顺序调用; (4)类自己的构造函数。 例如: //**********************转载 2015-11-13 11:04:42 · 1815 阅读 · 0 评论 -
详解C/C++预处理器
C/C++编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进行处理的程序。预处理器指令以#号开头标识,末尾不包含分号。预处理命令不是C/C++语言本身的组成部分,不能直接对它们进行编译和链接。C/C++语言的一个重要功能是可以使用预处理指令和具有预处理的功能。C/C++提供的预处理功能主要有文件包含、宏替换、条件编译等。 1、文件包含转载 2015-10-29 16:28:51 · 1719 阅读 · 0 评论 -
八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间...转载 2018-07-10 18:12:50 · 484 阅读 · 0 评论