Welcome 微信登录

首页 / 软件开发 / C++

C++指针和数组

C++指针和数组

C++指针和数组2011-04-18数组的指针即整个数组在内存中的起始地址,而数组元素的指针是数组中某一元素所占存储单元的地址。利用指针法引用数组元素能使目标程序质量高、占内存少、运行速度快。C++语言中规定:数组名就代表数组首地址,也就是数组第0号元素的地址。如int a[10];int *p;p=&a[0];/*与p=a,是等价的*/p+i或a+i就是a[i]元素的存储地址,即它们都指向数组的第i号元素a[i]。所以*(p+i)或*(a+i)就...
C++中的虚函数的实现方法

C++中的虚函数的实现方法

C++中的虚函数的实现方法2011-04-18软件屋学习 C++ 的同志不知道有没有和我一样遇到过这样的困惑:C++中的虚函数到底怎么实现的?在各种继承关系中,虚函数表的结构到底是什么样的?曾经我是很想当然,可是后来在使用ATL的过程中,我发现并不是我想的那样。大家知道,利用C++语言本身的特性进行COM编程当然是很方便的事,但是你就得随时随地都知道那虚函数表里头到底是些什么东西。讲C++语法的书没有义务告诉你C++产生的虚函数表是什么样的,这就是头痛的所...
红黑树的实现源码

红黑树的实现源码

红黑树的实现源码2011-04-21 cppblog.com converse最近因为要给ccache加入红黑树的支持, 找出来曾经实现的代码作为参考, 这才发现原来 的实现都是有问题的,也怪我的测试用例写的不好, 仅仅对插入操作进行了测试, 我向所有因 为阅读了这份代码而造成困惑的朋友表示道歉.这次重新实现, 所有的代码推倒重新编写, 参考了linux内核中红黑树的实现算法, 并且 对测试用例进行了加强,希望这是最后一个对红黑树算法的修订版本./*---...
time_t和DATE之间的相互转化

time_t和DATE之间的相互转化

time_t和DATE之间的相互转化2011-04-21 VC知识库 周星星两者的差别:time_t是整型,存储着至1970-1-1 00:00:00的时差(秒数)(UTC时间)DATA是浮点型,整数部分存储着至1899-12-30 00:00:00的时差(天数)(本地时间), 小数部分存储着时分秒。(BTW:DATA可以表示基点之前的时间,time_t不可以)本算法只是想说明两者之间转化是很easy的,不需要MFC的支持,不需要“晕倒 &rd...
C/C++的常见误区

C/C++的常见误区

C/C++的常见误区2011-04-211. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级 ,C++和C是兄弟关系。没有谁比谁先进的说法,更重要 的一点是C和C++各自的标准委员会是 独立的,最新的C++标准是C++98,最新的C标准是C99.因此也没有先学C再说C++的说法,也不 再(注意这 个"不再")有C++语法是C语法的超集的说法。2. C++/CLI和C# 是微软的,它们与C和C++没有任何...
加载COM的方式

加载COM的方式

加载COM的方式2011-04-21通常我们都是使用CoCreateInstance或CoGetClassObject获得接口,再通过接口访问他的成员方法。在C++支持下,从来不会有任何问题。但是如果使用Win32模式,纯粹C风格编程,就会出现问题了。通过研究我发现其实上述访问方式本身就存在问题。标准的访问方式,如D3D一样,接口的初始化必须在Com提供的API基础上完成。COM设计者需要提供一个API,像DLL的导出函数一样,供给外部程序调用。具体设计:...
C++的默认构造函数

C++的默认构造函数

C++的默认构造函数2011-04-211、每个类必须有一个构造函数,否则没法创建对象;2、若programer没有提供任何构造函数,则C++提供一个默认的构造函数,该默认构造函 数是无参构造函数,它仅负责创建对象,不做任何初始化的工作;3、只要programer定义了一个构造函数(不管是无参还是有参构造),C++就不再提供默 认的默认构造函数。即如果为类定义了一个带参的构造函数,还想要无参构造函数,就必须 自己定义;4、与变量定义类似,在用默认构造函数创...
利用C++模板,代替虚函数实现类的静态多态性

利用C++模板,代替虚函数实现类的静态多态性

利用C++模板,代替虚函数实现类的静态多态性2011-04-21 csdn 肖舸熟悉模板编程的朋友或许听到过这个技巧或者模式:Barton-Nackmann 技巧或者称 奇异 循环模板模式(Curiously Recurring Template Prattern)。其实在 《c++ 编程语 言》这本bible 书里,在模板那章提到过一个很奇妙的类的实现,用的就是这个技术。当时 ,我就被C++模板技术叹为观止。近期在学boost库时偶然碰到了这个技巧,同时...
WINX窗口类对象的内存管理

WINX窗口类对象的内存管理

WINX窗口类对象的内存管理2011-04-21 csdn博客 许式伟为了引入WINX窗口类对象的内存管理(生命周期模型),我绕了一大圈子。实在是,内存 管理太重要了,花多少口舌介绍它都不过分。我曾经见到这样一句话:"C++程序员觉得 内存管理太重要了,所以一定要自己进行管理;Java/C#程序员觉得内存管理太重要了,所以 一定不能自己去管理"。从某种意义上说,两者都是对的。那么WINX的窗口对象是否也是采用gc allocator呢?...
计划在C++建立仿Erlang式的分布式并行机制

计划在C++建立仿Erlang式的分布式并行机制

计划在C++建立仿Erlang式的分布式并行机制2011-04-21 csdn博客 许式伟梳理了下需求,大体如下:进程(Process)。进程是Erlang中一个虚拟的运行单位。既不是操作系统的进程,也不 是线程,而是比线程更加轻量的单位,更接近于协程。命名进程(NamedProcess)。命名进程的好处是,你可以向一个不知道进程ID的进程发送 消息。由于进程可能会宕掉(crash),进程ID可能会发生变化,所以在考虑了异常的环境下 ,命名进程降低了编码的...
简单字符串转换

简单字符串转换

简单字符串转换2011-04-21 VC知识库BLOG 终于有了间茅草棚在做字符串、文本操作时,我们时常会需要在wchar_t *和char *之间做转换或搭桥。直 接用API,参数太多不容易记住,常常要查文档,浪费不少时间。为了自己方便,对简单的转 换写了一个简单的转换包装类。下次或者用得着,帖代码做为保存。顺便提一下:发现有个东西很好用,std::stringstream系列 (#include < sstream >);其实,流式操作用起...
C++高精度实现10000位数字的乘除法

C++高精度实现10000位数字的乘除法

C++高精度实现10000位数字的乘除法2011-04-21 csdn博客 李同辉说明:做了个计算器,本来是要上传整个项目的,但突然发现不能上传资源了,就贴出来 算法部分的代码,大家多多指点啊,呵呵,比较难读,以后再上传整个项目,呵呵//转换,供乘法部分调用int turn(char s[], int num[]){ int i = 0, len, j; while(1) { if(s[i] == 0) break; else if(s[i] == "...
变体(Variant)与Dispatch调用(IDispatch)

变体(Variant)与Dispatch调用(IDispatch)

变体(Variant)与Dispatch调用(IDispatch)2011-04-21 csdn博客 许式伟变体(Variant)Variant类型理论上可以存放任何类型的数据,这也是中文很多 人称之为“变体”的原因。对于C++这种强类型语言的程序员来说,存在变体 (Variant)这样的类型是奇怪的。但是对于哪些淡化类型概念的语言(如Visual Basic等) 来说,Variant是它们默认的类型。在VB中,如果没有用As语句声...
<< 131 132 133 134 135 136 137 138 139 140 >>