- 博客(15)
- 资源 (8)
- 收藏
- 关注
原创 编程痛并快乐着
《人月神话》中提到编程这个职业时,列出编程给人带来乐趣的理由,同时也谈到这个职业也给人很多苦恼,下面是这篇文章的观点,觉得写的不错:快乐:编程的乐趣是一种创建事物的纯粹快乐。 快乐来自于开发对其他人有用的东西。 编程的过程体现了魔术般的力量。 学习新事物的乐趣,源于工作的非重复特性。 还来自于工作在如此易于驾驭的介质上。总之,编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望
2012-04-26 21:14:11 1166
原创 大学总结之影响我最深的十本书
今天是“世界读书日”,前几天微博上转发非常多的一条微博:“一日不读书,无人看得出;一周不读书,开始会爆粗;一月不读书,智商输给猪”,确实阅读是很重要的,对此我深有体会。大学四年我读了大量的书,其中大多是计算机技术方面的书,可以说从这些书中我打牢了我专业的基础,是我大学最大收获之一。今晚回头翻看了一下图书馆的借书历史记录,我自己也被吓到了,到目前为止竟然借了339本之多,主要是在大二和大三借
2012-04-23 23:14:56 4549 2
原创 20. 协助完成“返回值优化(RVO)”
[19]最后曾提到了在函数通过传值方式(by value)返回一个对象时,不可避免地要生成一个临时对象,这会严重影响到程序的效率,如下例计算两个分式的乘积:class CRational{public: CRational(int numerator, int denominator) { this->numerator = numerator;
2012-04-19 11:50:31 1002 1
原创 19. 了解临时对象的来源
什么是临时对象?C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行时确实生成了这样的对象。通常出现在以下两种情况:(1)为了使函数调用成功而进行隐式类型转换的时候。传递某对象给一个函数,而其类型与函数的形参类型不同时,如果可以通过隐式转化的话可以使函数调用成功,那么此时会通过构造函数生成一个临时对象,当函数返回时临时对象即自动销毁。如下例:
2012-04-18 23:00:27 1674
原创 16. 谨记80-20规则
80-20 法则一个程序 80% 的资源用于20% 的代码身上。这里的资源包括:执行时间、内存消耗、磁盘访问、维护成本.....这说明了:软件的整体性能几乎总是由其构成要素(代码)的一小部分决定。也给我们指明了提升软件性能的一个方向:我们只要找到这20%的代码,并进行相应的优化,那么我们程序的运行速度就可以有较大的提高。而怎样找到这20%的代码,有两种不
2012-04-17 14:26:29 1395
原创 7. 千万不要重载&& ,|| 和,操作符
C/C++语言对于逻辑表达式具有“逻辑短路”的性质,即一旦确定了真假值,表达式中即使有尚未检查的部分,都将返回。如:char *p;if ((p != NULL) && printf("%c", *p)) ... //(1) int rangeCheck(int index){ if ((index upperBound)
2012-04-16 17:39:53 953
原创 6. 区别increment/decrement操作符的前置(prefix)和后置(postfix)形式
C++中允许++ 和-- 操作符的前置和后置两种形式具有重载的能力。而重载是以参数类型来区分的,然而不论是++ 还是 -- 的前置或后置均没有参数,为了区分这两种不同的操作,只好让后置式有一个int自变量,并且在它调用的时候,编译器默认给该int指定一个0值。下面的例子是使char型也能进行++ 和 -- 的运算:class Char{public: Char(char); Cha
2012-04-16 16:27:52 1169
原创 5. 对定制的“类型转换函数”保持警觉
C++中允许编译器在不同类型中执行隐式转化,例如默默地将char转化为int,将short转化为double等等,这些是语言提供的。现在当你写自己的类型时,你可以选择是否提供某些函数,供编译器用作隐式类型转化之用。如定义一个类类型,是否允许其它类型转化为此类类型,我们可以操控的。可以通过两种函数允许编译器执行这样的隐式转化:单自变量constructor 和隐式类型转化操作符。单自变量co
2012-04-15 19:29:43 720
原创 8. 了解各种不同意义的new 和 delete
C++中关于new 的形态主要有三种:new operator, operator new, placement new三者的用法有着不同,注意区别适用的条件:new operator:new 操作符,和C++语言其它操作符(如+, -, ->, ::....)一样,是由语言内建的,总是完成相同的事情,程序员不能改变其意义。如下为new的一种用法:string *ps = ne
2012-04-15 14:10:54 1468
原创 2. 最好使用C++转型操作符
旧式的C转型方式,几乎允许你将任何类型转换为任何其它类型,有其自身的缺陷,表现在以下两方面:不能更精确地指明其转型的意图。如将一个pointer-to-base-class-object 转型为一个pointer-to-derived-class-object(改变一个对象的类型)和将一个pointer-to-const-object转型为一个pointer-to-non-co
2012-04-14 18:02:47 1033
原创 1.仔细区别POINTERS 和 REFERENCES
没有所谓的null reference: 若有一个变量有可能代表一个对象,也可能不代表任何对象,应该使用pointer; 如果这个变量必须代表一个对象,即不允许这个变量为null,则应该使用reference。 因此,reference必须要有初始化,但pointer就没有此限制(不过,无初始化的pointer风险很高)。
2012-04-14 16:43:16 836
原创 那些年,我们一起听过的讲座
2012年4月11日,听到科大“复兴论坛”这次请来了柳传志,很是激动,决定一定要去听一下,虽然我没有门票,这意味着我得很早去科大在外面排队等着进去。 下午5点在工大吃了晚饭,和田田、张宁一起坐公交过去的,大概5:30到了科大东区,在校园里逛了一下,发现科大那条道上也有好多樱花树,拍了张照片留念: 找到了论坛举办的报告厅,人还不多,没
2012-04-12 08:21:23 1115 1
原创 深入探索C语言之结构体(struct)
结构(struct)就是一种把一些数据项组合在一起的数据结构,其他语言把它称做为记录(record)。语法为将需要组合的内容放在花括号中,前面加上一个关键字struct,如下:struct {内容...};1. 怎样定义结构体变量:举个具体的例子,如将在校学生的信息定义为一个结构体,信息内容包括学生的姓名(string)、学号(long)、年龄(int)等,就可以声明如下:
2012-04-11 15:34:38 1665 1
原创 2012年中科大考研复试离散数学、编译原理试题(完整版)
离散数学1. (4分) 求与下述公式逻辑等值的前束合取范式:2. (8分) 对于命题公式P、Q、R,证明以下等值关系: 3. (8分) (1) 定义集合S={1,2,3,4,5}上的二元关系R1={| j = i 或 j = i / 2}, R2={ | i (2) 写出R2的关系图和关系矩阵,并指出其是否自反、反自反、对称、反对称、传递?
2012-04-04 16:53:45 6179 2
原创 2012年中科大考研上机机试试题(回忆版)
本次机试两个半小时,共5题。1. 字符串处理:从string.in文件里读入两个字符串,字符串除了数字还可能包括 '—'、'E'、'e'、'.',相加之后输出到文件string.out中,如果是浮点型,要求用科学计数法表示(最多包含10个有效数字)。 Sample Input: Sample Output: 34.5
2012-04-01 20:16:49 6270 8
排序算法之基数排序源代码
2011-05-05
排序算法之计数排序源代码另附博客地址
2011-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人