
C/C++
文章平均质量分 81
wenrenhua08
一直以来有的人只知道从一头吃香蕉,其实香蕉可以从两头吃1.好好搞好英语2.做技术,要想办法做普通人做不了的事情3.提高个人表达能力
展开
-
C++代码审查---参考林锐高质量C/C++
功能模块名称 审查人 审查日期 代码名称 代码作者 文件结构重要性 审查项结论 头文件和定义文件的名称是否合理? 头文件和定义文件的目录结构是否合理? 版权和版本声明是否完整? 重要头文件是否使用原创 2014-09-27 00:00:10 · 5295 阅读 · 2 评论 -
函数取地址与复制构造函数的使用
今天在优快云的论坛上逛一了圈发现有如下两段代码:我在两个提问的地方都已经给予了作答,同时发布到blog上希望能有更多的人受益。第一段是对复制构造函数的使用class c{string name;public:c(const string& s):name(s){}};void fn(c& s){cout<<"ok!"<<endl;}int main(){fn(st原创 2014-10-10 13:48:42 · 1162 阅读 · 1 评论 -
C++ 中的static关键字
static顾名思义是静态的意思。在这我要系统地讲述一下有关static关键字的作用,当然主要是讲述它在开发语言C与C++的作用,在其他方面的作用请另找资料。在讲解中肯定有不恰当之处,请大家大胆地扔砖,不要手软,文中的内容引用了不少网上的资料。 static从宏观上讲主要有两种用法,一、是面向过程设计;二是面向对象设计。前主要是涉及变量与函数的用法;后者呢包含前者用法的同时,还有原创 2014-10-11 11:15:09 · 4084 阅读 · 7 评论 -
C++开源代码项目汇总
C++开源码项目原创 2014-10-13 10:40:33 · 50691 阅读 · 1 评论 -
C++ 解析器--cint
CINT 是一个使用 C/C++ 语法的解释器,CINT 兼容 95% 的 ANSI C 代码和85% 的 ANSI C++ 代码。这基本上意味着如果你的代码没有使用太过于专业的 C/C++ 语法,CINT 都能够正确的解析,诸如类、虚函数、运算符重载、继承、指针、数组等等。CINT 甚至支持模板。CINT 所不支持的 C/C++ 语言特性已被列在 Limitions。一、构成CINT 已原创 2014-10-13 16:57:25 · 6314 阅读 · 0 评论 -
C++虚函数表分析
在逆向C++>>一文中提到 VC6.0 以上的编译器支持一个d1reportAllClassLayout的开关, 可以输出所有对象的内存布局信息, 我自己常用vs2005来开发,所以这里我就以vs2005为例讲怎么设置d1reportAllClassLayout。 右键项目属性(Properties)—》配制属性(Configuration Properties)—》C/C++-原创 2014-10-13 13:52:30 · 1594 阅读 · 1 评论 -
C++之多线程分析
在我们开始讲线程这前先了解一下线程的载体—进程。进程,它是一个正在运行的程序的实例,是一个程序在其自身的地址空间的一次执行活动。进程是资源申请、调度、和独立运行的基本单位。进程有两部分组成:1操作系统用来管理进程的内核对象,内核对象是系统用来存放关于进程的统计信息的地方,它是操作系统内部分配的一块内存块,该内存块是一种数据结构,其成员负责维护该对象的各种信息。2地址空间,它包含所有可执行模原创 2014-10-14 16:16:30 · 3849 阅读 · 0 评论 -
C++之new、delete 与malloc、free的异同
在C/C++编程中经常会申请内存,而对内存的申请释放操作有两套方法: new、delete 与malloc、free。他们的使用最好是成对使用,不要去混搭---这可不是时尚界哦。如下是这两组方法的异同或区别: 1、new、delete是c++中的操作符,malloc、free是C中的一个函数,它们都可用于申请动态内存和释放内存。 2、new不止是分配内存,而原创 2014-10-15 15:23:42 · 2970 阅读 · 0 评论 -
C++调用约定和名字约定
调用约定是指程序在函数调用时传递参数和获取返回值所采用的方法:通过寄存器、或通过栈、或者是两者的混合。用于指定Calling Convention的修饰符主要有:__cdecl,__stdcall,__fastcall等。调用约定可以通过工程设置:Setting...\C/C++ \Advanced\CallingConvention 项进行选择,缺省状态为__cdecl。它们决定以下内容:原创 2014-10-15 16:17:20 · 1182 阅读 · 0 评论 -
C++中常用到宏
_DOS_ 表示MS-DOS 16位系统平台WIN32 表示Windows32位系统平台WIN64 表示Windows64位系统平台_WIN32_WCE 表示Window Mobile 32位系统平台_UNIX 表示UNIX系统平台_POSIX_ 表示POSIX(Portable Operating System Int原创 2014-10-15 16:27:14 · 1718 阅读 · 0 评论 -
C++宏中的“#”与“##”用法
在C/C++的宏中“#”与"##"用法:一、原创 2014-10-21 14:02:09 · 1082 阅读 · 0 评论 -
TinyXml 与 Rapidxml效率对比
以前在做开始中一直没用TinyXml,在网上搜索说Rapidxml的效率比tinyXml高。个人比较喜欢追求效率,所以忍不住尝试性使用Rapidxml。RapidXml 的官方网站如下: http://rapidxml.sourceforge.net/manual.html。 RapidXml是一个使用C++编写的XML DOM解析工具包,整个解析工具包包含在一个头文件中,所以使用时不原创 2014-10-21 13:39:23 · 2758 阅读 · 0 评论 -
AR增强现实 Augmented Reality
增强现实(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。这种技术最早于1990年提出。随着随身电子产品运算能力的提升,增强现实的用途越来越广。AR系统具有三个突出的特点:①真实世界和虚拟世界的信息集成;②具有实时交互性;③是在三维尺度空间中增添定位虚拟物体。AR技术可广泛应原创 2015-06-30 12:20:51 · 8636 阅读 · 2 评论 -
开源Slam 代码PTAM与PTAMM的编译项目完整工程
经过几天研究,已经成功编译了PTAM项目,首先PTAM的下载地址是:http://www.robots.ox.ac.uk/~gk/PTAM/,同时也下载PTAMM项目的源码http://www.robots.ox.ac.uk/~bob/software/ptamm_download.html,其手册地址是http://www.robots.ox.ac.uk/~bob/software/ptamm/原创 2016-03-14 11:05:10 · 5408 阅读 · 15 评论 -
SLAM 介绍
SLAM是Simultaneous Localization and Mapping的缩写,意为“同时定位与建图”。slam说白就一句话:同时解决精确定位和环境绘制问题。首先是开场白,这项技术同时解决定位和环境绘制的问题:定位是一种精确的定位,包含机器位置、朝向、高度,不同于GPS;环境绘制例如使用SLAM,可以进一步恢复出三维,例如我们绕着城市拍一圈,就可以重建出三维城市的地图。 SL原创 2016-06-07 10:34:29 · 11293 阅读 · 2 评论 -
C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
一、本文目的与说明 1. 本文目的:理清在各种继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容。 2. 说明:虽然复制构造函数属于构造函数的一种,有共同的地方,但是也具有一定的特殊性,所以在总结它的性质时将它单独列出来了。 3. 单继承、多继承、虚继承,既然都属于继承,那么虽然有一定的区别,但还是相同点比较多。如果放在一块讲,但为了转载 2014-10-09 21:27:52 · 689 阅读 · 1 评论 -
C++的异常处理
一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这些错转载 2014-10-09 21:23:09 · 876 阅读 · 0 评论 -
多线程互斥--mutex(二)
不知道大家对多线程或多进程间的同步互斥的控制机制了解的怎么样,其实有很多种方法可以实现这个目的,但是这些方法其实由4种最基本的方法实现。这4种最基本的方法具体定义如下:在这有讲得不对的地方欢迎各位扔砖,希望不会误导大家。 1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源原创 2014-10-09 09:36:00 · 2083 阅读 · 3 评论 -
基于Doxygen的C/C++注释原则
基于Doxygen的C/C++注释原则标注总述1.文件头标注2. 命名空间标注3. 类、结构、枚举标注4. 函数注释原则5. 变量注释6. 模块标注7. 分组标注总述华丽的分隔线//---------------------------------------------------------------------------// Platf原创 2014-09-26 23:59:51 · 32345 阅读 · 1 评论 -
C++ 类型转换操作与操作符重载 operator type() 与 type operator()
类型转换操作符(type conversion operator)是一种特殊的类成员函数,它定义将类类型值转变为其他类型值的转换。转换操作符在类定义体内声明,在保留字 operator 之后跟着转换的目标类型。class CVImage{public : CVImage(); explicit CVImage(unsigned int width, unsigned int heigh原创 2014-09-27 00:01:15 · 1416 阅读 · 1 评论 -
c++中的强制转换
一、C语言的强制转换1.1 隐性转换 不同数据类型之间赋值和运算,函数调用传递参数等等,由编译器完成 int nTmp = 10; short sTmp = nTmp; //这个时候就需要注意转换时数据是否溢出(大字节转小字节)1.2 显性转换 在变量的前面加上(Type)进行显性转换,如: class Test; T原创 2014-09-27 00:01:13 · 630 阅读 · 1 评论 -
程序性能优化
在硬件资源昂贵的时代,编程人员非常注重程序的性能,以期望用尽可能少的硬件资源完成尽可能多的事情。随着科技的发展,摩尔定律的魔力使得硬件资源已越来越便宜,速度也越来越快,似乎性能已不是编程人员所需关注的事情了。然而在一个竞争与发展的时代,软件的功能越来越复杂,用户的操作体验越来越重要,而且竞争越来越激烈,谁能以更优势的价格,更好的操作体验,完成更多更复杂的事情,谁就将在激烈竞争中胜出。因而软件的性能原创 2014-09-27 00:00:41 · 770 阅读 · 0 评论 -
C++关键字简述
ID范畴关键字说明1数据类型bool基本类型—-布尔类型2数据类型char基本类型—-字符类型3数据类型wchar_t基本类型—-宽字符类型4数据类型d原创 2014-09-27 00:00:22 · 702 阅读 · 1 评论 -
设计模式之工厂模式
一、简介 工厂模式属于创建型模式,大致上可以分三类: 1)、简单工厂模式(Simple Factory) 2)、工厂方法模式(Simple Factory) 3)、抽象工厂模式(Simple Factory) 这三种模式是逐步抽象,并且更具一般性。另有一种分法就是将简单工厂模式看作是工厂方法的一种特例,归为一类模式。如下是使用工厂模式的情况: 1.在编码时不能预见需要创建哪种类原创 2014-09-26 23:59:55 · 660 阅读 · 0 评论 -
C/C++语言编码规范
C++编程规范原创 2014-09-27 00:00:18 · 17422 阅读 · 11 评论 -
面向对象程序设计与原则
面向对象的程序 1.需求分析 2.总体设计 3.详细设计阶段 4.实现阶段 一、需求分析阶段: 以用例图为主,到类分析图为止。类图是源码的来源。用例的主功能用序列图表示。用例的状态可以用状态图标识, 注意活动图要细化到与序列图相同程度。 按照不同用户画出不同用例图。按照不同物理位原创 2014-09-26 23:59:57 · 665 阅读 · 0 评论 -
C++中的mutable关键字
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数原创 2014-09-28 12:14:33 · 610 阅读 · 1 评论 -
c++ 中的__declspec关键字
其实__declspec关键字是Microsoft c++中专用的关键字,它配合着一些属性可以对标准C++进行扩充。这些属性有:align、allocate、deprecated、 dllexport、dllimport、 naked、noinline、noreturn、nothrow、novtable、selectany、thread、property和uuid。我们这里主要讲述的是函数原创 2014-09-28 13:55:42 · 1210 阅读 · 3 评论 -
C++ 中的explicit构造函数
C++ explicit构造函数 explicit按字面意思是明确的,显式的。在C++类中只要定义的构造函数编译器就不会帮你生成默认构造函数。按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* str ); // 用C风格的字符串str作为初始化原创 2014-09-28 11:43:46 · 864 阅读 · 1 评论 -
C++ virtual继承
C++ virtual继承的另一种名称是菱形继承,主要目的是用于解决从不同类继承来的同名数据成员在内存中有不同的拷贝,造成数据不统一的问题,以致于在进行类释放时造成内存泄漏。将共同的基类作为虚基类,这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。如下是实现格式:cla原创 2014-09-28 12:01:47 · 2426 阅读 · 5 评论 -
C++ 中的const关键字
为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量: const Type 变量名 或 Type const 变量名 //两者相同 常引用: const Type &引用名 常对象:原创 2014-10-08 21:16:45 · 801 阅读 · 1 评论 -
多线程互斥--mutex
多线程之线程同步Mutex (功能与Critial Sections相同,但是属于内核对象,访问速度较慢,可以被不同进程调用)一 Mutex 互斥对象(mutex)内核对象能够确保线程拥有对单个资源的互斥访问权。实际上互斥对象是因此而得名的。互斥对象包含一个使用数量,一个线程ID和一个递归计数器。 互斥对象的行为特性与关键代码段相同,但是互斥对象属于内核对象,而关键代码原创 2014-10-08 22:04:22 · 1255 阅读 · 5 评论 -
最新手势跟踪与识别
话不多说,请大家看视频,有疑问欢迎各位咨询:原创 2016-07-05 16:13:47 · 3365 阅读 · 2 评论