<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[Tommy&#39;s&nbsp;C++&nbsp;life]]></title>
<link>http://blog.pfan.cn/yourtommy</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[2007-1-9凌晨随想]]></title>
		<link>http://blog.pfan.cn/yourtommy/22662.html</link>
		<description><![CDATA[&nbsp;&nbsp;&nbsp; 现在是2007年1月9日午夜00:10. 其实记的是1月8日的心情。&nbsp;&nbsp;&nbsp; 今天（8号，星期一）编译成绩出来了，我92，很高吧~~，我很高兴，编译呀！！92分可不简单啊！这种高兴的感觉没有人来分享，唉~~老爸老妈对我是一点也不了解了。毕竟分开这么久了，所处的环境不同。之前在高中时对我的进步有促进作用的他们，现在感觉有点“拖我后腿”了。。&nbsp;&nbsp;&nbsp; 今天打电话回家，是说家里打的1000块钱都已经收到了，顺便说一下考试结果的事。我对妈妈说我92分时，她一点反应都没有，好像这是很平常的事一样。在“技术”和“成绩”中努力地寻求“双赢”，这种事情对我来说是非常不容易的。我放弃了很多“玩”的时间。老爸老妈不能了解……&nbsp;&nbsp;&nbsp; 不管怎么样，这个学期应该是我所有学期中最成功的一次，但仍然不能令我滿意。成绩方面如果运气好的话，这个学期可能可以拿个二等奖学金；技术方面，C++的水平已经使我有可能进一个好的实习单位，但好像还差一点，我要再用半年的时间把它完善。这几天考试连连，都没有心情学C++了，除了复习考试就是玩星际，看6rooms的网站。现在还没决定是否下定决心不玩游戏了。&nbsp;&nbsp;&nbsp; 还在想家里人与我隔阂的问题。他们确实与我相隔太远了……&nbsp;&nbsp;&nbsp; 当我在憧憬未来的美好生活时，他们在担心我的就业问题，我跟他们说我学得很好，他们无法理解。上次我用英文在IT项目管理课上演讲，我感觉很好，很流利地完成了。我得到了很好的锻炼，同学们也很赞赏。但我想与他们分享我的快乐时，他们问我“分数怎么样？”。很遗憾，我分数不是最高的，技术分只有8分。当我说是“是用英文讲”的时候，他们不能理解用英文讲与用中文讲有什么区别……&nbsp;&nbsp;&nbsp; 他们的想法太“幼稚”了，我不知道怎么形容，用这个词可能不太好，但他们觉得4级证之类的东西很重要，而我却在不停地锻炼自己的英语实际操作水平。有时我实在很无奈，我的价值他们现在根本无法体会，比如说如果我跟他们说“我现在能写出什么什么程序”，他们能理解吗？只有在之后工作时，换成大把钞票的时候，价值对他们就明朗化了。而在此之前，我在他们心中永远是那个“粗心的懒小孩”。&nbsp;&nbs]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2007-01-17 23:35:00</pubDate>
		</item>
				<item>
		<title><![CDATA[卷二快看完了]]></title>
		<link>http://blog.pfan.cn/yourtommy/21492.html</link>
		<description><![CDATA[还剩一章，多线程的东西。今天是第十六周的周一，大三上学期。
明天就要复习“编译原理”了，再把之前的程序编完。
今天考了“商务谈判”，应该还不错，毕竟是开卷。
加油！Hold on！！除此之外我真不知道能做些什么。]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-12-11 21:37:00</pubDate>
		</item>
				<item>
		<title><![CDATA[纪念一个小人]]></title>
		<link>http://blog.pfan.cn/yourtommy/21235.html</link>
		<description><![CDATA[早几天，导员在邮箱公布了一个奖学金、助学金发放名单。有我的份，一千五百块钱。不少啊，可以干很多事哪！我本来想去买硬盘和一些书的。
后来某位小人在导员面前打小报告，说我不贫困，有电脑。结果导员就把我的钱给撤了。听导员的意思是她也很烦这种人，但没办法。我也只能接受了，但我跟她说明我想在寒假期间参加工业培训。估计只要这活动实行的话，我肯定是能去的，毕竟感觉导员像是欠了我一个人情一样。
我无所谓啊，一千五，虽然不少，我也想得开。就当从来没有这件事就行。但让我觉得恶心的是那个打小报告的人。因为导员提供了一些线索，我发现可能性最大的就是我们寝室的“王瑜”。而且我就认定是他了。
这种人~~让我在这里好好骂骂他吧！！可以让我心里舒服一些。我当然不是怕他，不敢和他正面冲突。因为顾虑到学校的校规、其他同学之间的来往，以及对那种人的蔑视，所以只好躲在这里写一些了，肯定不能跑到别人面前去说坏话了。
就那种傻B，叫出他的名字我都有点反胃~~技术超一般，还天天装B，听他说话就知道他有几两重了。也不想多说了，不管从理性还是从感性都可以知道这种人学的所有东西都只是皮毛而已。
唉！！技术不咋地也就拉倒吧，做人也不会，既不会拍上，也不会拍下。给老师打小报告？？这种人能有出息？老板不fire你就算你幸运了。和别的寝的关系不知道怎么样，和我们寝室的四个人都合不来，一共才六个人。走的那两个要留下来估计也好不了多少。
不想说了，我确实不是那种斤斤计较的小人，那种人也没什么好评论了，也就那样了，去死吧！！你自己会害死自己的，我不相信不会。唉~~还得和这种人在一个房间里再过半年多，我现在还看到他那令人作呕的身形在我面前晃来晃去，还有那种让人很不爽的声音。
算了，让他自生自灭吧，不过最好别把我逼急了，君子也会报仇的。]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-12-03 22:26:00</pubDate>
		</item>
				<item>
		<title><![CDATA[《think&nbsp;in&nbsp;C++(volumn&nbsp;2)》学完一半了]]></title>
		<link>http://blog.pfan.cn/yourtommy/21230.html</link>
		<description><![CDATA[今天是第十四周的周日，明天是第十五周。
刚从自习室回来，在那待了两个多小时。学C++。
我不太记得什么时候回到C++上来的。十二周周一考完用户界面后我就开始复习“财务管理”，那时一个礼拜是每天晚上都准备那个考试。白天在干什么？我想不起来了。可能是在学C++吧。
十三周好像打了四五天游戏，也可能是一个礼拜。那几天基本没有学习。
十三周周一考的财务管理，周四考“Web Services”。我是第十二周的周六突然很想玩“生化危机”，也可能再早个一两天。第十三周的周二去买了几本书。所以我第十二周看了一点C++，大多数时间看财务管理。第十三周基本玩游戏，生化危机，星际之类的。第十四周一直学C++，还看了点编译原理。
所以到现在是花了一个多周的时间学了半本书。下个周不知道能不能看完。之后还要从头把第一卷复习一遍，把习题做了，然后是卷二。估计一个多月的时间才能弄完。那时都1月份了，都快放假了。所以效率得高点，早点弄完。
今天谭杰对我说“C++是实现底层的东西，不实用”。这能影响我吗？我还会坚持下去。不管High Level 还是底层实现，我肯定比他们强。他们怎么有资格评价？而且我的目标是通过C++，达到融会贯通的效果。就他们眼中的“高层”？是他妈的什么东西呀？.Net这种东西，虽然我比不上王劦，他一天就学会，我最多也就一个礼拜。我现在的C++已经学到比较深的地步了，我克服种种困难走到现在，怎么能随便放弃？？还有，C++是只能实现底层的东西吗？？文盲……
效率很重要！以后学习时要注意效率。这两天在自习室看书，发现在寝室学习效率超低。虽然在自习室效率也不能说非常高，有时还是会开小差，但比寝室要好的多。
这个学期重点放在学术上，把基础掌握牢点，下个学期多参与一些实践，把重点放在工程上。不知道能不能出去兼职，怎么总感觉学的东西太多，总也学不完……我现在孤注一掷了，别让我失望啊~~
之后还要学网络……真他妈快要累死了，所以说要效率嘛~]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-12-03 22:01:00</pubDate>
		</item>
				<item>
		<title><![CDATA[“用户界面”考完了]]></title>
		<link>http://blog.pfan.cn/yourtommy/20297.html</link>
		<description><![CDATA[&nbsp;&nbsp;&nbsp; 今天6点半，D34考用户界面。得心应手，填空题、选择题、问答题都做完了。考完后听别人说这不会那不会，应该会考得不错吧。只要最后两次实验OK，就好了。
&nbsp;&nbsp;&nbsp; 今天转而看C++，有点投入不进去。刚还完了把星际，感觉不错，但时间被浪费掉了。待会熄灯后先看会C++，再看《财务管理》，争取以后的考试也考好一些。]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-11-13 22:31:00</pubDate>
		</item>
				<item>
		<title><![CDATA[VC暂告一段落]]></title>
		<link>http://blog.pfan.cn/yourtommy/20246.html</link>
		<description><![CDATA[&nbsp;&nbsp;&nbsp; 今天是第十一周的星期天，明天是第十二周。
&nbsp;&nbsp;&nbsp; VC学一个月了。今天把那本《技术内幕》的前三部分看完了。视图、文档这些。除了进程、WinHelp、DLL还有一个多视图窗口实现外（打印和位图也没仔细看，想以后再说），其它基本都没问题了。那些存在问题的地方是因为我对windows操作系统不熟悉所致，所以之后我要去学windows的相关知识了。
&nbsp;&nbsp;&nbsp; 总结一下VC的学习过程：当初刚学VC时，有一种飘的感觉，对MFC的体系还不是很懂，有些问题不能自己思考。现在已经感觉入门了，脚已经踩到实地了。前台的视图、后台的文档，消息的传递过程……。MFC的框架虽不能说掌握的很透彻，但是已经了解了，熟悉了。有些问题能通过自己的判断猜测得出结论，不像当初找不着边际。
&nbsp;&nbsp;&nbsp; 就是早几天有了入门的感觉，那天晚上很高兴，终于有脚踏实地的感觉。当创建一个窗口时用一个窗口C++对象创建，指定其style就能得到自己想要的窗口。就是在了解这个后有了感觉。因为这个规律在大多数情况下都适合。
&nbsp;&nbsp;&nbsp; 下一步我要回到上次中断的地方：C++编程思想。没有其它事情的干扰，可以按自己的顺序来了。上次中断学VC是因为要做用户界面设计的实验，现在可以踏踏实实地把C++语言掌握了。
&nbsp;&nbsp;&nbsp;&nbsp;再下一步是windows的学习。听说《windows核心编程》和《Advanced Windows》很好，到时去找一找。
&nbsp;&nbsp;&nbsp; 现在的我处于学习癫疯状态。白天十二点起到晚上的三点睡。中间可能会看个电影、吃个饭、写blog等用去个两三个小时，其它时间都在学习（包括考试复习）。算算一天有十二个小时，最差也有十小时以上在学习。我感觉很充实，希望努力能有回报。
&nbsp;&nbsp;&nbsp; 考试也准备的不错，VC成绩出来93，虽然比不上梁文政，但也不错了。合同法、知识产权也应该没问题，考试时也蛮顺利的。下一场考试用户界面不知道会怎么样，现在基本已经全复习完了。
&nbsp;&nbsp;&nbsp; 坚持下去~~~Just Hold On。]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-11-12 17:28:00</pubDate>
		</item>
				<item>
		<title><![CDATA[VC学习过程小结]]></title>
		<link>http://blog.pfan.cn/yourtommy/20026.html</link>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 开学第8周周四之前开始正式学习VC，具体时间已经记不清了，反正是在第一次“用户界面设计”实验之前，因为那节课我看《VC++6.0技术内幕》，那时看了四、五章吧。所以学VC的准确时间可能在第8周的周一或第7周的周末——实在没印象了。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在是第十周的周日，明天就是第十一周。也就是说学VC已经学了三个礼拜。 想想这么久究竟学了些什么，现在来回顾一下。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在学VC之前花了一两个月学习C++语言，看的是《Thinking in C++》英文版，已看完了上篇，除了后几章习题没做。因为要做“用户界面设计”实验，打算用VC++做（瞧不起Delphi~~）而且还要应付VC考试，于是先放下了C++纯语言的学习，开始学VC。那时的打算是先中断一下，等学到一定程度的时候回来把C++完成。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第一本VC书是《VC++6.0技术内幕》，看到对话框（第六章）的时候感觉很压抑，这本书就告诉你怎么做，而不给出原因，对于我这种Windows编程的菜鸟来说很不爽。幸好那时在我们寝室被我卷起了一股学VC的浪潮，大家都学VC++，室友有几本书——《深入浅出MFC》、《深入理解VC++6.0》，我看了一下还是很不错的，对于一个初学者来说。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是我连续几天就抱着一本《深入浅出MFC》，了解了Windows消息机制的一些基础，把第三章的MFC技术模拟都用自己的理解实现了（我之前已经掌握了C++语言的一般基础）。但看到第八章“视图文档结构”的时候，看不下去了，特别是看到画图什么的。我那时掌握的都是理论：运行类识别、动态创建、消息映射等等，只会一些简单的VC操作。于是我决定补补实际操作的能力，开始学《深入理解VC++6.0》。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这本书手把手地教你怎么样画个圆，怎么样写字什么什么的。我一直看到I]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-11-05 21:37:00</pubDate>
		</item>
				<item>
		<title><![CDATA[全局范围的语句]]></title>
		<link>http://blog.pfan.cn/yourtommy/19679.html</link>
		<description><![CDATA[最近在学VC++，看那本《深入浅出MFC第2版》。看到第三章，有个模拟RTTI的程序。我看懂后自己编写代码。也像书上一样定义了一大堆的宏，基本上都没什么大问题，除了在一条语句“CCObject::classCCObject.Next = NULL;”上卡壳了。
因为这条语句是在宏定义IMPELEMENT_DYNAMIC(class_name)中，而IMPLEMENT_DYNAMIC的执行是在main之前，也是全局范围中。编译器给我的错误提示是：在"."之前少个";"，还有CCObject::classCCObject缺少类型说明。我看那条语句，看了又看，心想“妈的！不就一个类的一个静态对象中的成员变量赋值吗？怎么会错呢？”
于是开始了痛苦的调错经历：。。。。。（省略掉）真是郁闷死我了！！
最后发现：这条语句在预处理展开后是放在全局范围内，全局范围只能声明和定义，不能执行语句。想想真是废话，全局范围的语句给谁执行呢？
然后再看书上的解决方法，作者用的是使用一个只含有构造函数的类声明，然后定义一个这样的类，以需要注册的类的名字为参数进行构造。（详情见原书）当初看到他的处理方法我觉得真是多此一举，直接执行不就行了吗？现在才发现作者的高明之处。自己水平的烂~~
上面是写给自己看的，用来记住这件事情。我平时写博客都希望能给别人一些信息，来解决和我有一样苦恼的人的烦忧。我平时有问题也用搜索引擎，有的人的博客确实给了我不少帮助。
那么啰嗦其实就是：全局范围不能执行语句，要想执行，调用类的构造方法~~]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-10-24 13:29:00</pubDate>
		</item>
				<item>
		<title><![CDATA[C++中的内存分配&nbsp;memory&nbsp;management]]></title>
		<link>http://blog.pfan.cn/yourtommy/18937.html</link>
		<description><![CDATA[很早之前一直遗留的问题终于在今天得以解决。
程序在运行时需要的内存通过下面3种方法获得：
一、全局变量（包括静态局部变量等）：在程序运行之前在静态内存空间分配。它们的生命周期是整个程序的运行过程。2006-11-14&nbsp;&nbsp;&nbsp;&nbsp; 16:15 补充：若在函数f()中定义一个静态变量a，则a在f()被调用的时候构造，在程序退出时被析构。
二、局部变量（包含在{}中）：在栈（stack）中分配。函数的调用过程（函数调用时的参数、函数返回地址、函数返回值、函数体内的其它变量等如何在栈中进行处理）现在还不是很懂，过段时间再来补充。2006-11-14&nbsp;&nbsp;&nbsp;&nbsp; 16:27 补充：函数在被调用时，首先将其参数压入栈中，标准为逆序（即从右向左压入）；然后将函数的返回值地址压入；最后是函数内部的局部变量。当函数要返回（return）时，弹出所有局部变量，之后（1）C语言中把返回值压到返回地址的顶部；（2）而C++中返回值在寄存器里，直接写入返回值地址中，这样就可以避免中断之类所造成的返回值丢失的问题。
三、运行时对象：在堆（heap）中分配，必须手动释放内存空间。(1)&nbsp; 生存周期：如果你不手动释放，则一直持续到程序结束；(2) &nbsp;void指针：如果将开辟的空间地址赋给一个void指针，它能记住这个空间的大小，当delete它时它能正确地释放这个大小的空间，与释放非void指针唯一不同的是它不调用析构方法；(3)&nbsp; 动态对象数组：当动态定义一个对象数组时，这个数组内的所而对象都调用了它们各自的构造方法，A* ap = new A[100]; 在析构这个数组时，如果是delete []ap，则调用数组内所有对象的析构方法，并释放这100个对象所占的空间；如果是delete ap，则只调用数组内的第一个对象的析构方法，然后释放整个数组占用的空间（在试验时用这种释放空间的方法在调用第一个对象的析构方法、准备释放空间时会出现错误，所以要释放数组时就应采取第一种方式）。]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-09-29 12:28:00</pubDate>
		</item>
				<item>
		<title><![CDATA[static&nbsp;const&nbsp;in&nbsp;VC++]]></title>
		<link>http://blog.pfan.cn/yourtommy/18496.html</link>
		<description><![CDATA[有一条语句：static const number = 100;
这条语句放置在C++中的类中应该是没问题的，在C++标准中它表示编译时就能产生值，可以用在如数组定义等编译时执行的语句中。
但是，有些编译器并不完全支持C++标准，如VC++ 6.0。于是有替代方法如下：
class A
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enum { number = 100 }; //在编译时产生值
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int a[number]; //编译时执行的数组定义
};]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-09-13 09:39:00</pubDate>
		</item>
				<item>
		<title><![CDATA[Temporaries]]></title>
		<link>http://blog.pfan.cn/yourtommy/18484.html</link>
		<description><![CDATA[临时变量（Temporaries）是编译器在计算表达式时所构造的变量。它与普通的对象相同，只是它由编译器控制，而不受程序员的控制而已。
临时对象在产生时并不调用构造函数，但在销毁时会调用析构函数。我个人的理解是：临时对象是对已有对象的复制，不会产生无效值，因为已有对象已经调用过构造函数了。为了效率，临时对象没有必要再调用一次构造函数。但析构不同，必须调用以释放一些资源。补充：临时对象调用的是复制构造方法A(const A&amp;)，A为类名。
书上说临时变量应该是常量（const型），但好像并不是如此。或许常量只是一个建议，但并不一定实行。
class X{};
X f() {return X()}
void g1(X&amp;) {}
void g2(const X&amp;){}
main()
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g1(f()); //书上说会编译错误，但我在VC上通过编译，且没有警告
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g2(f()); //成功
}]]></description>
		<author><![CDATA[yourtommy]]></author>
		<pubDate>2006-09-12 15:10:00</pubDate>
		</item>
		</channel>
</rss>