随笔分类 - c++
摘要:看下面这个例子: [代码]下面是调用例子: [代码]我们的本意是想输出1,可是结果却是输出0!不用惊奇,书中给出了答案:虚拟函数系动态绑定(dynamically bound),而缺省参数值却是静态绑定(statically )所以,<<Effective C++>>第38条告诉我们: 绝对不要重新定义继承而来的缺省参数。
阅读全文
摘要:世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。1、扎实的基础 数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握它们,很难写出高水平的程序。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。因此多读一些计算机基础理论方面的书籍是非常...
阅读全文
摘要:前不久看到一文章,说用assert的时候不要把非法情形和错误情形混淆了,错误始终是要处理的.然后我review自己最近写的代码,愣是没有弄明白什么是非法什么是错误,难道错误不是非法么,非法不是错误么?我本身用assert是相当频繁和随意的,但是经过这么一看,反而觉得原来那些assert的代码都要改成错误处理了...花非花,雾非雾.经过思考与实践,最终确定了规则.非法情形,大部分你觉得有问题的地方,...
阅读全文
摘要:话说一直想找一个别人写好的使用,可惜没什么人会拿这小东西发布,只好自写一个。1.多级链表分配池我不知道这种设计的具体学名是什么,这部分的内容也许你去看《STL源码分析》的有关章节更合适一些,这里我只能用我粗陋的语言描述一下。内存池,完全可以从字面上理解为从池子里申请内存,释放的时候还给池子。最简单的内存池应该是fix_pool吧,即每次分配出来的内存块大小是固定的。这种池子的管理结构是一个链表,链...
阅读全文
摘要:标题党一下.....昨天做了一个特殊抓取的爬虫,不到50行python代码,痛痛快快的给我抓取了2000个flashgame和玩法说明.除了感叹会写程序实在太好了之外,还想到了如何快速学习一门新语言的事情.严格来说,应该是学习命令式语言,和其他类型的语言可能一点交集都没有.一门语言的本质只是简单的语法和基本IO,只要稍微认知了这些内容就能开始写程序了,要精通则是一个不断进行实际应用和调试的过程. ...
阅读全文
摘要:C语言中函数就是一些代码的集合,实现相对单一的功能;应该有名称、参数、返回值。实际上函数应该是能够从调用程序中接受输入,处理一定的逻辑,并最终能返回到调用程序的一段代码的集合。本主要讨论windows下C函数如何实现的;主要包括:函数调用约定、参数传递和返回。调用约定Windows中默认使用的cdecl调用约定,又叫C调用约定(不加任何修饰就是这种约定)。cdecl的调用约定意味着:1)参数从右向...
阅读全文
摘要:看几个例子:shorta=0xa400;longnShift=2;if(a<<nShift<0)nShift=0;上面的程序中,nShift等于多少?shorta=0xa400;longnShift=2;longb=a<<nShift;上面程序的b最后值是多少?shorta=0xa400;longnShift=2;shortc=a<<nShift;上面程序...
阅读全文
摘要:优化很多时候是必要的,特别对于瓶颈程序。这里讨论一段代码的优化过程,从而演示一段简单的代码优化过程,并希望得到一些建议。先描述一下需求:一个16位数的序列,将其奇数位置放到一个序列,偶数问题放到另外一个序列。注意奇数和偶数序列的长度不一定相同。最简单的代码:1voidCTestClass::SplitToEvenOddSeqs(short*sp,short*dp1,short*dp2,inteve...
阅读全文
摘要:程序员当然要说代码了,代码是程序员的一切,离了代码说其他都是假的,我这里从一段代码开始。intc=0,n=0,nDiff=0;intheight=m_imgHeight;//imageheightLPBYTElpDsp=pSampling;jp2_int16*sp,val;LPBYTEdest;//m_imgWidth-imagewidthnDiff=m_lineBytes-m_imgWidth*...
阅读全文
摘要:在 C/C++ 语言中,函数是如何被调用的呢?本文就实际的例子,走进汇编代码来看下函数调用的过程。 首先看一个简单的代码例子: void test(int i) { int j = i; } void test1() { } int test2() { return 1; } void test3(int a,int b,int c) { } void test4() { int ...
阅读全文
摘要:一, 为什么要跨平台? 你想过把你的 Windows 上编写的程序在 Linux 编译运行吗,以及在 Mac 或其他 OS 上运行等等?反过来也一样?这就需要涉及到跨平台编程知识。这里需要注意的是,平时很多在一个平台运行的程序在跨平台的时候变的不再正确。 Java 并非真的是跨平台的开发环境,它是运行在它自己的平台上。这里主要关注 C 和 C++ 的跨平台开发。 下面主要就几个方面来讨论跨平台编程...
阅读全文
摘要:引言: 编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。第1招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招——以空间换时间。例如:字符串的赋值。方法A,通常的办法:#define LEN 32char strin...
阅读全文
摘要:msvcrt.dll (名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy等C语言库函数,并且为使用C/C++(Vc)编绎的程序提供了初始化(如获取命令行参数)以及退出等功能.C Runtime Library 的来历, API, STL, MFC, ATL关系 刚接触Windows开发时,为了快速入门查了不少资料,没想到看的越多,脑袋越...
阅读全文
摘要:Rendering from Vertex and Index Buffers (Direct3D 9) Direct3D提供了索引和非索引两种绘制方式,索引方式使用一组索引(表示)所有的顶点组成,顶点数据是存储在顶点缓冲区中,索引数据是存储 在索引缓冲区中。下面是一小部分使用顶点缓冲区和索引缓冲区时所具有的公共说明。 这些例子比较IDirect3DDevice9::DrawPrimit...
阅读全文

浙公网安备 33010602011771号