10 2011 档案
不生成中间变量,交换两个数
摘要:普通程序员方法: 交换两个数是比较经典而且基础的算法之一。 我们要交换两个数字,一般的做法是定义个中间变量,然后交换赋值。例如:int temp;temp = a;a = b;b = temp; 对于初学者来说,这可以说是除了 hello world 外,敲得最多的一段代码了。但在手持设备中,内存资源很宝贵,甚至要求不开辟新的空间,就地完成交换工作。文艺程序员方法: 这时又有很多人想出了以下的方法,用一个变量存储两个信息的集合,用另外一个变量存储任意一个信息,这种存储方式就可以完成交换的工作。例如:a = a + b;b = a - b;a = a - b;显然这是一个巧妙的方法,但是两... 阅读全文
posted @ 2011-10-19 01:23 陈文斌_5months 阅读(632) 评论(0) 推荐(0)
内联函数与宏的区别
摘要:浅谈了内联函数,似乎也该对宏重新认识下了,然后再总结下宏和内联函数的区别。毫无疑问,平时使用宏要比使用内联函数多得多,但是自己却没有去总结过这个再也熟悉不过的宏。很多时候,我们使用一样东西,往往因为它给你带来了方便而一味的使用它,但是却没有去想过它有什么缺陷,什么时候不能用它。下面引用杨凡的论文《浅析C++中内联函数与宏的区别》来说明。1.宏的缺陷 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前保存现场并且记忆执行的地址,转回后要恢复现场,并按原来保存的地址继续执. 阅读全文
posted @ 2011-10-18 11:30 陈文斌_5months 阅读(2129) 评论(0) 推荐(0)
内联函数
摘要:内联函数在很多人看来并不是很起眼,但是我依稀记得当时自己在学校里去QG工作室面试时,师兄就问到内联函数和宏有什么区别。最近,自己在搞个类似QQ的点对点IM系统,在封装消息实体类时,由于消息实体类中的读写成员函数使用的频率比较高,加上这些函数的函数体比较小,经过综合考虑我就把它们设计成了内联函数。刚好自己想写点什么,今天就总结下这个小而巧的内联函数的。 (一)在这里还是引用《C++Primer》这本书的一些内容,因为参考了很多资料,还是觉得这本书的写的最好的。在了解内联函数前,我们先看下面一个小函数的例子再引出内联函数。 const string &shorterString(const 阅读全文
posted @ 2011-10-11 19:55 陈文斌_5months 阅读(290) 评论(0) 推荐(0)
重载和重写的区别
摘要:重载和重写的区别1、重载(Overloading) (1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。(2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。下面是重载的例子:package c04.answer;//这是包 阅读全文
posted @ 2011-10-11 19:54 陈文斌_5months 阅读(189) 评论(0) 推荐(0)