摘要: 什么是临时对象? C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行时确实生成了这样的对象.通常出现在以下两种情况:(1)为了使函数调用成功而进行隐式类型转换的时候。 传递某对象给一个函数,而其类型与函数的形参类型不同时,如果可以通过隐式转化的话可以使函数调用成功,那么此时会通过构造函数生成一个临时对象,当函数返回时临时对象即自动销毁。如下例://计算字符ch在字符串str中出现的次数int countChar (const string& str, char ch);char buffer[];char c;//调用上面的函数countChar (buffe 阅读全文
posted @ 2012-04-18 23:09 hazir 阅读(3267) 评论(2) 推荐(1) 编辑
摘要: 80-20 法则一个程序 80% 的资源用于20% 的代码身上。这里的资源包括:执行时间、内存消耗、磁盘访问、维护成本.....这说明了:软件的整体性能几乎总是由其构成要素(代码)的一小部分决定。也给我们指明了提升软件性能的一个方向:我们只要找到这20%的代码,并进行相应的优化,那么我们程序的运行速度就可以有较大的提高。而怎样找到这20%的代码,有两种不同的方法:根据程序员的直觉和经验“猜”出影响软件性能提高的瓶颈代码。但往往大部分程序员对于程序的性能特质,都有错误的直觉,因为程序的性能特质倾向高度的非直觉性。举个例子,我们当然可以采用某些特选的算法和数据结构加入程序之中,将运算量最小化,但如 阅读全文
posted @ 2012-04-17 14:33 hazir 阅读(621) 评论(1) 推荐(1) 编辑
摘要: C/C++语言对于逻辑表达式具有“逻辑短路”的性质,即一旦确定了真假值,表达式中即使有尚未检查的部分,都将返回。如:char *p;if ((p != NULL) && printf("%c", *p)) ... //(1) int rangeCheck(int index){ if ((index < lowerBound) || (index > upperBound)) ... //(2) ...}(1)中你不用担心p为NULL时,调用printf函数会出现错误,因为一旦p为NULL逻辑与的检测将返回FASLE,无需计算后面... 阅读全文
posted @ 2012-04-16 17:38 hazir 阅读(2058) 评论(1) 推荐(1) 编辑
摘要: C++中允许++ 和-- 操作符的前置和后置两种形式具有重载的能力。而重载是以参数类型来区分的,然而不论是++ 还是 -- 的前置或后置均没有参数,为了区分这两种不同的操作,只好让后置式有一个int自变量,并且在它调用的时候,编译器默认给该int指定一个0值。下面的例子是使char型也能进行++ 和 -- 的运算:class Char{public: Char(char); Char& operator++ (); //前置式++ const Char operator++ (int); //后置式++ Char& ope... 阅读全文
posted @ 2012-04-16 16:27 hazir 阅读(3099) 评论(4) 推荐(2) 编辑
摘要: C++中允许编译器在不同类型中执行隐式转化,例如默默地将char转化为int,将short转化为double等等,这些是语言提供的。现在当你写自己的类型时,你可以选择是否提供某些函数,供编译器用作隐式类型转化之用。如定义一个类类型,是否允许其它类型转化为此类类型,我们可以操控的。可以通过两种函数允许编译器执行这样的隐式转化:单自变量constructor 和隐式类型转化操作符。单自变量constructor :指的是以单一自变量成功调用的constructor,这样的constructor可能只有一个单一参数,也可能有多个参数,而其他参数都有默认值。如下面两个例子:class CName{ . 阅读全文
posted @ 2012-04-15 19:38 hazir 阅读(455) 评论(0) 推荐(0) 编辑
摘要: C++中关于new 的形态主要有三种:new operator, operator new, placement new三者的用法有着不同,注意区别适用的条件:new operator:new 操作符,和C++语言其它操作符(如+, -, ->, ::....)一样,是由语言内建的,总是完成相同的事情,程序员不能改变其意义。如下为new的一种用法:string *ps = new string("hazirguo");它主要完成的任务包括三个方面:分配足够的内存,用来放置某类型对象。上例中分配足够放置一个string对象的内存。调用一个constructor,为分配的 阅读全文
posted @ 2012-04-15 14:15 hazir 阅读(464) 评论(0) 推荐(2) 编辑
摘要: 旧式的C转型方式,几乎允许你将任何类型转换为任何其它类型,有其自身的缺陷,表现在以下两方面:不能更精确地指明其转型的意图。如将一个pointer-to-base-class-object 转型为一个pointer-to-derived-class-object(改变一个对象的类型)和将一个pointer-to-const-object转型为一个pointer-to-non-const-object(改变对象的常量性),在旧式C语法中并不区分。难以辨识。旧式C转型方式的语法为(type)expression,由一对小括号加上一个对象名称组成,而这种语法结构在C++的任何地方都有可能使用,这就无法 阅读全文
posted @ 2012-04-14 17:58 hazir 阅读(1334) 评论(1) 推荐(2) 编辑
摘要: 没有所谓的null reference: 若有一个变量有可能代表一个对象,也可能不代表任何对象,应该使用pointer; 如果这个变量必须代表一个对象,即不允许这个变量为null,则应该使用reference。 因此,reference必须要有初始化,但pointer就没有此限制(不过,无初始化的pointer风险很高)。string &rs; // error! not initialstring s("hazirguo");string &rs = s; // right! rs refere to spointers可以被重新赋值指向另一个对象,ref 阅读全文
posted @ 2012-04-14 16:42 hazir 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 2012年4月11日,听到科大“复兴论坛”这次请来了柳传志,很是激动,决定一定要去听一下,虽然我没有门票,这意味着我得很早去科大在外面排队等着进去。 下午5点在工大吃了晚饭,和田田、张宁一起坐公交过去的,大概5:30到了科大东区,在校园里逛了一下,发现科大那条道上也有好多樱花树,拍了张照片留念: 找到了论坛举办的报告厅,人还不多,没票的已经有二十多个在排着队了,我们也在后面排起来。人越来越多,到了七点,外面排队的焦躁了,由于人多,后面的人更急,怕进不去,纷纷往前涌,科大的保安很敬业,为了保持秩序,分别和一位老师、一位同学发生了冲突。 这次的报告厅不大,只能容纳五六百人,过道也很窄,没票也只能. 阅读全文
posted @ 2012-04-12 08:39 hazir 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 结构(struct)就是一种把一些数据项组合在一起的数据结构,其他语言把它称做为记录(record)。语法为将需要组合的内容放在花括号中,前面加上一个关键字struct,如下:struct{内容...};1.怎样定义结构体变量:举个具体的例子,如将在校学生的信息定义为一个结构体,信息内容包括学生的姓名(string)、学号(long)、年龄(int)等,就可以声明如下:struct { char sName[10]; long sNo; int sAge; };结构体本质是一种数据类型,和C语言的内置内型(char,int,long...)类似,我们可以用它来定义变量,如定义一个学生Ja... 阅读全文
posted @ 2012-04-11 15:34 hazir 阅读(933) 评论(0) 推荐(0) 编辑
摘要: 离散数学1.(4分)求与下述公式逻辑等值的前束合取范式:2.(8分)对于命题公式P、Q、R,证明以下等值关系:3.(8分)(1)定义集合S={1,2,3,4,5}上的二元关系R1={<i,j>|j=i或j=i/2},R2={<i,j>|i<j},求合成关系R2R1和R1R2.(2)写出R2的关系图和关系矩阵,并指出其是否自反、反自反、对称、反对称、传递?4.(8分)设<G,*>是群,H是G的非空子集。证明:若任给a,b∈H,都满足a*b-1∈H,则<H,*>是<G,*>的子群。5.(6分)证明:图G连通,每个结点的度数均为偶数, 阅读全文
posted @ 2012-04-04 16:53 hazir 阅读(1001) 评论(0) 推荐(0) 编辑
摘要: 本次机试两个半小时,共5题。1.字符串处理:从string.in文件里读入两个字符串,字符串除了数字还可能包括'—'、'E'、'e'、'.',相加之后输出到文件string.out中,如果是浮点型,要求用科学计数法表示(最多包含10个有效数字)。SampleInput:SampleOutput:34.56 2.7956e22.45e22.最大公约数:从number.in文件中读入n个数,求出这n个数的最小值、最大值以及它们两的最大公约数,输出到文件number.out中。number.in中第一行为n,接下来为n个大于零的整数。S 阅读全文
posted @ 2012-04-01 20:16 hazir 阅读(1037) 评论(0) 推荐(0) 编辑
摘要: 这是2006年USTC的机试试题,试题来源于网络,解答为我的原创。转载请注明出处。谢谢~01.读int矩阵文件,将之转置后输出// 简单,无需解释#include <stdio.h> int main() { int m, n; //A[m][n] int A[100][100]; int i, j; while (scanf ("%d %d", &m, &n) != EOF) { for (i = 0; i < m; i++) //读入矩阵 for (j = 0; j < n; j++) scanf ("%d", 阅读全文
posted @ 2012-03-28 21:19 hazir 阅读(429) 评论(0) 推荐(0) 编辑
摘要: // n皇后 #include <stdio.h> #include <string.h> #define MAX 15 int n; //n queen int cur; //cur row int A[MAX]; //the ith row's queen put in the A[i]th column int tot = 0; // total nums //cur 为当前遍历到的行。 //从第1~n列中选择一列,使当前皇后放到此位置时,与已经放好的1~cur-1行的皇后不冲突(即不在同一行、同一列、两个对角线上) void search(int cur 阅读全文
posted @ 2012-03-28 20:42 hazir 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 英语阅读理解中表示作者态度的词汇汇总来源: 恩波论坛 一 赞同positive adj.肯定的, 实际的, 积极的, , 确实的favorable adj.赞成的, 有利的, 赞许的, 良好的approval n. 赞成, 承认, 正式批准enthusiasm n.狂热, 热心, 积极性supportive adj.支持的,支援的defensive 为……而辩护二 否定negative adj.否定的, 消极的, 负的, 阴性的disapproval 不赞成objection 异议opposition 反对critical 批评的criticism 批评批判disgust vi.令人厌恶, 令 阅读全文
posted @ 2011-08-26 22:41 hazir 阅读(1054) 评论(0) 推荐(0) 编辑

一个代码可以创造一个世界,也可以毁灭一个世界!