随笔分类 - c++
摘要:Here is the senario in my requirements: I need store datetime value in a serialization file(binary file). the file will be transfer to server side by network. the server-side is used c plus p...
阅读全文
摘要:step: 1.初始化Winsock 2.创建一个完成端口 3.根据服务器线程数创建一定量的线程数 4.准备好一个socket进行bind然后listen 5.进入循环accept等待客户请求 6.创建一个数据结构容纳socket和其他相关信息 7.将连进来的socket同完成端口相关联 8.投递一个准备接受...
阅读全文
摘要:函数原型: 思路: 转换二进制很简单,二步操作即可完成, 1:循环对数字1左移31-i(i={0,31})位(从高位开始的),再与把number作位与操作, 2:再把刚才的结果通过右移31-i (i={0,31}) 位得出每一位是否为0还是1, 这样就得到了每一位的二进制位,再把这些二进制位拼成字符串就OK了! 转换十六进制麻烦一点,要考虑字母的情况,
阅读全文
摘要:阅读指引: 示例代码为什么要字节对齐编译器对字节对齐的一些规则结合编译器原则分析示例总结 1.示例代码 先看一下这段程序的运行结果。示例代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->structA{inta;charb;shortc;};structB{chara;intb;shortc;};#pragmapack(2)structC{chara;intb;shortc;};#pragmapack(1)structD{inta;char
阅读全文
摘要:在标准C++中,实际上是不提供对复数类型递增与递减操作符的支持,复数包含实数与虚数两部分。我通过重载了复数的操作符来实现递增与递减操作。 递增与递减操作都是针对复数的实部来实现的。比如complexdouble cval; cval++只是针对复数实部加1.下面是我的详细实现: 先看看前置操作符的实现形式,是通过引用来进行的,非常简单。[代码] 后置操作符的形式与前置类似,为了与前置操作符区分,加了另外一个参数,int类型的,这只是一个额外参数,没什么其它的意义,与前置操作符不同的是,函数的返回值是以传值的方式进行的,而不是以引用的方式传递,只是简单返回原值。[代码] 这两种实现
阅读全文
摘要:虚函数是很多编程语言中一个特性,比如c#,java,当然在c++语言中也有。这三种语言都是面向对象的语言。我们都知道面向对象语言有三个最基本的特征就是:继承,多态,封装。在c++语言中,这种多态的特征就是通过虚函数(virtual)来实现的。这种实现方法在其它语言中(比如c#)中也是如此。 我要说的就是虚函数到底是怎么实现的。还是以例子来说明。我引用了上一篇随笔中的代码。[代码] 类继承结构图如下: 其中fun3是虚拟函数,对ClassB,ClassC子类中分别进行了重写。 下面我解释一下虚函数的背后是怎么实现的: 我们都知道,虚函数可以做到动态绑定,为了实现动态绑定,编译器是通过一
阅读全文
摘要:一道非常基础的题目,请回复下面程序的结果:[代码] 如果你知道结果,请回复!以后我再解释virtual function是怎么实现多态的!
阅读全文
摘要:c++看dynamic linking的 module define format:[代码]等价于下面:[代码]
阅读全文
摘要:继续前二篇的话题,让CDC输出图形具有保持功能的第三种方法是利用兼容DC。 思路首先利用当前绘制DC来创建一个兼容DC,创建完成之后 兼容DC相当于一个与它关联的DC的引用,好比一块画布,用户在这块画布上作图。当窗体重绘时,直接把这块画布上图形拷贝到当前DC,这样就达到了保持图形的功能。刚刚说到 一块画布,其实兼容DC采用一块和当前客户区域同样大小的位图作为画布。 具体代码如下:[代码] 当...
阅读全文
摘要:本篇继续写我的笔记,上一篇中介绍了CDC输出的图形具有保持功能,只介绍了一种方法(最常见的绘图数据保存,然后重绘), 这次介绍第二种方法,该方法主要是利用元数据文件的形式来保存用户绘制过的图形,它的思路很简单: 利用元数据来保持功能用户绘制过的图形思路: 每次采用元数据文件DC用户手动绘制完图形以后, 都会保存至元数据文件中,当以后窗体重绘时使用当前DC来重新播放该元数据文件一样,来达到图形保...
阅读全文
摘要:看了孙鑫老师的书后,顺便对已绘制的图形具有保持功能作一下总结。总的来说,有三种方法可以图形具体保持功能。分别如下:在每次绘制图形后,用一个对象数组来保存已经绘制的样式以及图形坐标 。只在在窗体重绘时重新来绘制这些保存的图形数据即可。采用元数据文件,它采用了元数据文件设备上下文来保存已绘制的图形,每次窗体重绘时再播放元数据文件来实现图形保持功能。这种方法采用一个兼容DC,它利用一个兼容位图(相当于一...
阅读全文
摘要:最近没什么心情看亚运,因为我不喜欢看那些没有悬念的比赛,所以花一些时间来写写代码。 我想设计一个支持整数的数序类,除了最基本的特点以外(支持add,remove,get,display)以外,最大的特点可以进行同类数序的合并。该数序暂时只支持升序。 其实.net框架中已有很多集合类支持Union合并操作,比如List类。 我决定用c++语言来实现它。 集合命名为:AscNumSeque...
阅读全文
摘要:这几天有个中学生问我怎么求一元二次方程的根,我一下子还真傻了,不知道从何下手, 那时候我记得我永远都记不住公式,考试的时候花了大把时间还去推算公式,结果推算出来的公式经常是少了正负号。这次又去推算公式,弄出来之后, 结果那位同学说这个公式好面熟,在书上找出来了,我被BS了一把,哎........闲来无聊,写写代码打发时间。干脆把把代码写到博客上来了,我专门写了一个程序给他看。那位同学他说挺方便的,...
阅读全文
摘要:插入符多用于文本处理程序中,其实也就是我们经常在字处理软件中看到的光标指针。在程序中,可以创建二种插入字符,第一种是固定的插入符号(SolidCaret),第二种就是可以是图形的插入符号。 先看第一种, 利用MFC wizard建立一个Project[代码]其 CreateSolidCaret方法用于创建一个插入符,该方法需要指定插入符的高度及宽度。在程序中用当前文本平均宽度/8得到,这个不是什...
阅读全文
摘要:很多人认为MFC中的CWnd对象就是窗口,其实不然,它只是拥有一个与窗口相关联的扭带,即窗口句柄。可以模拟一下CWnd对象:[代码]窗口一旦销毁,并不表示CWnd对象销毁,其实只中把窗口句柄设置为NULL,反之,CWnd销毁,窗口肯定销毁。
阅读全文
摘要:vc6.0早就有这么一说,与office相冲突,具体体现在 vc6.0 “打开”功能以及添加新的文件时候,会提示“内存不能为读................” 网上有很多方法,与Office2003有冲突,也有说说与office2007冲突,其实任何事情都是要亲自试验的,据我所知,更具体地讲,vc6.0与office visio有冲突,卸载了就没...
阅读全文
摘要:一个简单的定义指定了变量的类型和标识符,它并不提供初始值。如果一个变量是在全局域global scope 内定义的,那么系统会保证给它提供初始值0 。 打个比方,定义变量 [代码] salary,wage,month,day,year ,distance的初始值都为0,因为它们都是在全局域内定义的。 如果变量是在局部域local scope 内定义的,或是通过new 表达式动态分配的,...
阅读全文
摘要:c++提供的标准库功能分类大体如下:基本运行支持。比如如内存分配管理、运行时类型信息等。同时兼顾了C标准库。做了极少的修改,以便尽可能地减少违反类型系统的情况。字符串与I/O流。包括了国际化、本地化字符集以及基本的输入/输出流操作。容器及提供容器的基本算法。容器包括vector,list,map等等。基本算法则包括最常见遍历,排序等基本操作。数值运算。 标准库使用忠告:不用重新发明车轮去做每件事...
阅读全文
摘要:最近在做项目时,发现在实现一些接近操作系统底层功能的时候,显得力不从心啊,而且在项目中用了一很多第三方的东西,很大一部分与硬件在打交道,觉得有必须重新温习一下c++(抛弃“她”三年了啊),想想还是重归于好吧! 特以此次“旅行”来记录我曾经失去的美好! 废话不多说,写吧! 概念重温 :"声明"与“定义” 这二个概念有必须解...
阅读全文