c/c++
文章平均质量分 84
000000000000O
这个作者很懒,什么都没留下…
展开
-
C++类型转换总结
http://www.cnblogs.com/goodhacker/archive/2011/07/20/2111996.htmlC风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。stat转载 2017-09-20 10:49:59 · 378 阅读 · 0 评论 -
C++函数返回值与引用
对于函数的返回值,看似简单,但并非如此,比如:int func(int a);该函数会返回一个int型,如果进行一个调用int result=func(3);会发生什么情况?首先,func将返回值复制到一个匿名临时变量中,在这里假设该临时变量为anony(其实是没有名字的,这里方便阐述);然后,再将anony的值复制到result,可以看出,这里是进行了两次复制的。而并非一次复制。转载 2014-09-28 01:17:37 · 762 阅读 · 0 评论 -
C++函数调用过程深入分析
0. 引言 函数调用的过程实际上也就是一个中断的过程,那么C++中到底是怎样实现一个函数的调用的呢?参数入栈、函数跳转、保护现场、回复现场等又是怎样实现的呢?本文将对函数调用的过程进行深入的分析和详细解释,并在VC 6.0环境下进行演示。分析不到位或者存在错误的地方请批评指正,请与作者联系。 首先对三个常用的寄存器做一下说明,EIP是指令指针,即指向下一条即将执行的指令的地址;转载 2014-09-26 00:52:47 · 2293 阅读 · 0 评论 -
C/C++函数调用过程分析
这里以一个简单的C语言代码为例,来分析函数调用过程代码:转载 2014-09-26 00:42:40 · 764 阅读 · 0 评论 -
C++ map的用法
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapma转载 2014-07-07 16:41:21 · 802 阅读 · 0 评论 -
C++Vector用法
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。标准库vector类型使用需要的头文件:#include 。vector 是一个类模板。不是一种数据类型,vector是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。一、 定义和初始化vecto转载 2014-07-07 14:52:13 · 747 阅读 · 0 评论 -
C++得到当前进程所占用的内存
使用SDK的PSAPI (Process Status Helper)中的BOOL GetProcessMemoryInfo( HANDLE Process, PPROCESS_MEMORY_COUNTERS ppsmemCounters, DWORD cb);typedef struct _PROCESS_MEMORY_COUNTERS { DWO转载 2014-07-03 11:30:39 · 4940 阅读 · 0 评论 -
C/C++获取当前系统时间
个人觉得第二种还是比较实用的,而且也是最常用的~不过当计算算法耗时的时候,不要忘记second,不能只要用Milliseconds来减,不然后出现负值,若是算法耗时太长就得用minutes啦。再不然,就hours……//方案— 优点:仅使用C标准库;缺点:只能精确到秒级#include #include int main( void ) { time_t t转载 2014-06-12 15:00:13 · 769 阅读 · 0 评论 -
c++模板类(一)理解编译器的编译模板过程
c++模板类(一)理解编译器的编译模板过程 如何组织编写模板程序 前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自转载 2014-06-10 16:41:15 · 5044 阅读 · 1 评论 -
使用Cmake生成makefile
转自:CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 linux 的 Makefile 或 Windows Visual转载 2014-06-10 17:47:10 · 2935 阅读 · 0 评论 -
C++ 模板
1 作用2 基本形式3 原理4 特殊原创 2014-06-10 16:38:28 · 660 阅读 · 0 评论 -
c++/c 获取cpp文件行号跟文件名
编译器内置宏:先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息。ANSI C标准中有几个标准预定义宏(也是常用的):__LINE__:在源代码中插入当前源代码行号;__FILE__:在源文件中插入当前源文件名;__DATE__:在源文件中插入当前的编译日期__TIME__:转载 2014-06-05 14:36:51 · 975 阅读 · 0 评论 -
C\C++书籍
原文链接: bert hubert 翻译: 伯乐在线 - 周昌鸿译文链接: http://blog.jobbole.com/61308/人们常常问我有什么C++和编程的书籍推荐,也许是因为我在PowerDNS有一个关于“编写可读性良好的C++代码”的演讲。这篇博文可以作为我对上述问题的一个回答,同时也包含了一些更广泛的笔记编程。如果你有任何补充或喜欢的书籍但是我转载 2014-03-17 21:09:50 · 734 阅读 · 0 评论 -
WinMain和main
WinMain的原型:int WINAPI WinMain(HINSTANCE hinstance,//程序本身的实例句柄 HINSTANCE hPrevInstance,//历史遗留,hPrevInstance=NULL; LPSTR lpCmdLi转载 2014-03-17 21:43:30 · 992 阅读 · 0 评论 -
浅谈C++中内存泄漏的检测
首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck,功能非常强大,相信做C++开发的人都离不开它。此外就是不使用任何工具,而是自己来实现对内存泄露的监控,分如下两种情况:一. 在 MFC 中检测内存泄漏假如是用MFC的程序的话,很简单。默认的就有内存泄露检测的功转载 2014-10-06 21:15:54 · 617 阅读 · 0 评论 -
c++弱引用与强引用
https://www.zhihu.com/question/26851369智能指针一个很重要的概念是“所有权”,所有权意味着当这个智能指针被销毁的时候,它指向的内存(或其它资源)也要一并销毁。这技术可以利用智能指针的生命周期,来自动地处理程序员自己分配的内存,避免显示地调用delete,是自动资源管理的一种重要实现方式。为什么要引入“弱引用”指针呢?弱引用指针就是没有“所有权”的指转载 2017-09-19 15:08:23 · 1818 阅读 · 0 评论 -
定义c/c++全局变量/常量几种方法的区别
http://www.cnblogs.com/yaozhongxiao/archive/2010/08/08/1795338.html在讨论全局变量之前我们先要明白几个基本的概念: 1. 编译单元(模块): 在ide开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(link error) 因为它转载 2017-09-19 13:52:00 · 483 阅读 · 0 评论 -
IDE VS2010
快捷键:展开合并代码Ctrl-M-O 折叠所有方法Ctrl-M-L 展开所有方法 Ctrl-M-M 折叠或展开当前方法查找Ctrl+H 查找关键字,可在整个工程查找原创 2013-12-16 23:19:05 · 2719 阅读 · 0 评论 -
带你玩转Visual Studio——带你高效开发
http://blog.csdn.net/luoweifu/article/details/48852119上一篇文章带你玩转Visual Studio——带你了解VC++各种类型的工程一文中讲了各种类型VC++工程的主要功能和用途。现在将带你一起快速开发c++程序。有过Java开发经验的人都知道Java的常用开发工具(如Eclipse、Intellij IDEA等)都有非常强转载 2017-09-13 15:16:14 · 583 阅读 · 0 评论 -
C++ com
http://www.cnblogs.com/hlxs/p/3783920.html昨天看了《COM本质论》的第一章”COM是一个更好的C++”,觉得很有必要做一些笔记,于是整理成这篇文章,我相信你值得拥有。这篇文章主要讲的内容是:一个实现了快速查找功能的类FastString,在一个小小的需求之后,慢慢的演变成一个COM组件的过程。类FastString实现了一个快速转载 2017-02-21 11:21:38 · 471 阅读 · 0 评论 -
Windows CreateEvent,SetEvent,WaitForSingleObject的用法
当你创建一个线程时,其实那个线程是一个循环,不像上面那样只运行一次的。这样就带来了一个问题,在那个死循环里要找到合适的条件退出那个死循环,那么是怎么样实现它的呢?在Windows里往往是采用事件的方式,当然还可以采用其它的方式。在这里先介绍采用事件的方式来通知从线程运行函数退出来,它的实现原理是这样,在那个死循环里不断地使用WaitForSingleObject函数来检查事件是否满足,如果满足就退转载 2017-02-28 17:01:26 · 1136 阅读 · 0 评论 -
C++ Socket编程步骤
sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字。服务器端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket());2:绑定套接字到一个IP地址和一个端口上(bind());3:将套接字设置为监听转载 2017-02-28 15:24:52 · 339 阅读 · 0 评论 -
C++中L和_T()之区别
http://www.cnblogs.com/yaowen/archive/2013/01/15/2861727.html字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和uni转载 2016-11-29 11:33:56 · 485 阅读 · 0 评论 -
PDB文件:每个开发人员都必须知道的
PDB Files: What Every Developer Must Knowhttp://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx PDB文件:每个开发人员都必须知道的 一 什么是PDB文件大部分的开发人员应转载 2016-11-08 16:18:56 · 4365 阅读 · 2 评论 -
C++STRING类常用函数
C++string类常用函数string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length转载 2014-10-05 18:14:13 · 689 阅读 · 0 评论 -
C/C++ 数字转成字符串, 字符串转成数字
数字转字符串:用C++的streanstream:#include #Include string num2str(double i){ stringstream ss; ssi; return ss.str();}字符串转数字:int str2num(string s) {转载 2014-10-04 15:35:37 · 750 阅读 · 0 评论 -
位运算与优化
原码:如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1。剩下的n-1位表示概数的绝对值。例如: X=+101011 , [X]原= 00101011 X=-101011 , [X]原= 10101011 位数不够的用0补全。PS:正数的原、反、补码都一样:0的原码跟反码都有两个,因为这里0被分为+0和-0。原创 2014-10-01 17:21:57 · 1086 阅读 · 0 评论 -
原码, 反码, 补码 详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式转载 2014-10-02 02:28:23 · 585 阅读 · 0 评论 -
C++内存泄漏检测
最基本的检测#include "stdafx.h"#ifdef _DEBUG #define DEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__) //重新定义new用于内存泄漏检测时输出行号 #define DEBUG_MALLOC(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __L原创 2014-10-06 21:38:53 · 2929 阅读 · 0 评论 -
C++两个类相互引用错误留影
java中类相互引用很方便,c++中有编译顺序的问题c++声明作用,告诉编译器,我声明的东西你要是找不到,那就跳过去吧,等全编译完你就可以找到了。C1.h#pragma once#include "C2.h"//㈠C1.h要包含C2.h,C2.h也要包含C1.h时,要在类的定义前加上另一个类的声明,否则编译时后编译的类找不到先编译的类。class C2;class C1{原创 2014-01-13 16:05:35 · 814 阅读 · 0 评论 -
C++ 内存管理
C++内存区域1 栈: 函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 2 堆: 由new分配的内存块,手动动态分配,一般一个new就要对应一个delete。[如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收]。可以使用虚拟内存,调用硬盘存储 3 自由原创 2014-01-20 17:43:47 · 758 阅读 · 0 评论 -
C++ 模版
有以下这样3个求加法的函数: 1 int Add(int x,int y) 2 { 3 return x+y; 4 } 5 6 double Add(double x,double y) 7 { 8 return x+y; 9 }10 11 long Add(long x,long y)12 {13 return x+y;14 }它们拥有同一个函数名,相同的函数体,转载 2014-01-18 23:50:57 · 644 阅读 · 0 评论 -
c++预编译头文件
许多初学 VC 的朋友也许都为那么一个问题困扰过: 为什么所有的cpp都必须#include "stdafx.h" 也许请教了别的高手之后,他们会告诉你,这是预编译头,必须包含。可是,这到底是为什么呢?预编译头有什么用呢? 这得从头文件的编译原理讲起。其实头文件并不神秘,它的全部作用,就是把自己的所有内容直接“粘贴”到相应的#include转载 2013-12-19 10:36:25 · 835 阅读 · 0 评论 -
LIB和DLL的区别与使用
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅转载 2013-12-12 13:37:56 · 797 阅读 · 0 评论 -
DLL编写教程
半年不能上网,最近网络终于通了,终于可以更新博客了,写点什么呢?决定最近写一个编程技术系列,其内容是一些通用的编程技术。例如DLL,COM,Socket,多线程等等。这些技术的特点就是使用广泛,但是误解很多;网上教程很多,但是几乎没有什么优质良品。我以近几个月来的编程经验发现,很有必要好好的总结一下这些编程技术了。一来对自己是总结提高,二来可以方便光顾我博客的朋友。好了,废话少说,言归正传转载 2013-12-12 11:04:41 · 901 阅读 · 0 评论 -
LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
连接器LNK是通过调用cvtres.exe完成文件向coff格式的转换的,所以出现这种错误的原因就是cvtres.exe出现了问题。在电脑里面搜索一下cvtres.exe,发现存在多个文件,使用最新的cvtres.exe替换老的文件即可,替换之前记得备份一下,如果不对,可以替换回来。例如:我的电脑里面安装了vs2010,最近更新了系统,打了一些补丁,结果就出现这种错误了。在转载 2013-12-08 22:40:10 · 852 阅读 · 0 评论 -
cocos2dx(0)学习资料汇总
沈大海cocos2d教程http://blog.csdn.net/sdhjob/article/category/1279156himi csdnhttp://blog.csdn.net/xiaominghimi/article/category/854459原创 2013-06-04 21:54:21 · 1013 阅读 · 0 评论 -
do...while(0)另类使用方法
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除goto语句。 通常,如转载 2013-06-04 21:44:33 · 872 阅读 · 0 评论 -
C++ using namespace std 详解
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。一 :和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h转载 2013-06-02 22:03:21 · 860 阅读 · 0 评论 -
VC++中文件类型小结
VC++中文件类型小结 .dsw---- 这种类型的文件在VC中是级别最高的,称为Workspace文件 .dsp---- 在VC中,应用程序是以Project的形式存在的,Project文件的扩展名为.dsp,在Workspace文件中可以包含多个Project,由Workspace文件对它们进行统一的协调和管理,每个工程都对应一个dsp文件 .opt---- 与dsw类型的Work转载 2013-06-01 11:50:09 · 1211 阅读 · 0 评论