﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-&lt;size=60&gt; 通关旅 &lt;/size&gt;-随笔分类-学习日志</title><link>http://www.blogjava.net/softgamer/category/19697.html</link><description>softgamer 的痕迹</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 08:58:37 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 08:58:37 GMT</pubDate><ttl>60</ttl><item><title>C++体会 -- 静态数据成员</title><link>http://www.blogjava.net/softgamer/archive/2007/02/10/99097.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Sat, 10 Feb 2007 01:12:00 GMT</pubDate><guid>http://www.blogjava.net/softgamer/archive/2007/02/10/99097.html</guid><wfw:comment>http://www.blogjava.net/softgamer/comments/99097.html</wfw:comment><comments>http://www.blogjava.net/softgamer/archive/2007/02/10/99097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/softgamer/comments/commentRss/99097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/softgamer/services/trackbacks/99097.html</trackback:ping><description><![CDATA[
		<font color="#0000ff" face="Courier New" size="4">   静态数据成员很像是全局变量，但static数据成员有类作用域，静态成员可以是public,private或protected.<br />   静态数据成员在文件范围内<font color="#ff3300">必须进行一次初始化</font>。类的public静态成员可以通过类的任何对象访问，也可以用二元作用域分辨符通过类名进行访问。<font color="#ff3300">类的private和protected 静态成员必须通过类的public成员函数或类的友元访问</font>。<font color="#ff3300">即使类没有对象，但仍然有静态成员。类没有对象时，要想访问public静态类成员，只需在成员数据名前加上类名和二元作用域分辨符(::)</font>.<font color="#ff3300">要在类没有对象时访问private或protected 静态类成员，则需要提供一个public静态成员函数，并在调用函数时在函数名前面加上类名和二元作用域分辨符。</font><br /><br />#File Test.h<br />#ifndef TEST_H<br />#define TEST_H<br /><br />class Test<br />{<br />   public:<br />         Test( const char * , const char * );<br />         ~Test();<br />         const char *GetFstString() const;<br />         const char *GetLstString() const;<br /><br />         <font color="#ff3300">static int GetCount();</font><br /><br />  private:<br />         char * strFst;<br />         char * strLst;<br /><br />         <font color="#ff3300">static int count;  </font><br /><br />};<br /><br /><br />#endif<br />---------------------------------------------------------------------------------<br />#File Test.cpp<br />#include &lt;iostream&gt;<br /><br />using std::cout;<br />using std::endl;<br /><br />#include &lt;cstring&gt;<br />#include &lt;cassert&gt;<br />#include "Test.h"<br /><br /><font color="#ff3300">int Test::count = 0;<br /><br />int Test::GetCount() { return count ; }</font><br /><br />Test::Test( const char * sFst, const char * sLst )<br />{<br />   strFst = new char[ strlen( sFst ) + 1 ];<br />   assert( strFst != 0 );<br />   strcpy( strFst, sFst );<br />  <br />   strLst = new char[ strlen( sLst ) + 1 ];<br />   assert( strLst != 0 );<br />   strcpy( strLst, sLst );  <br /><br />   count++; // inc static count<br /><br />   cout &lt;&lt; " Test cons for " &lt;&lt; strFst<br />        &lt;&lt; "  " &lt;&lt; strLst &lt;&lt; " called. " &lt;&lt; endl;<br />}<br /> <br />Test::~Test()<br />{<br />   cout &lt;&lt; " ~Test() called for " &lt;&lt; strFst<br />        &lt;&lt; " " &lt;&lt; strLst &lt;&lt; endl;<br />   delete [] strFst;<br />   delete [] strLst;<br />   count--;<br />}<br /><br />const char * Test::GetFstString() const<br />{<br />    return strFst;<br />}<br /><br />const char * Test::GetLstString() const<br />{<br />    return strLst;<br />}<br /><br />--------------------------------------------------------------------------------<br />#File: main.cpp<br />#include &lt;iostream&gt;<br /><br />using std::cout;<br />using std::endl;<br /><br />#include "Test.h"<br /><br />int main()<br />{<br />   cout &lt;&lt; "before cons is "<br />        &lt;&lt; Test::GetCount() &lt;&lt; endl; // use class name<br /><br />   Test *pTest1 = new Test( "FstTest1", "LstTest1" );<br />   Test *pTest2 = new Test( "FstTest2", "LstTest2" );<br /><br />   cout &lt;&lt; "after cons is "<br />        &lt;&lt; pTest1-&gt;GetCount();  //using instan<br /><br />   cout &lt;&lt; "\n\nTest1: "<br />        &lt;&lt; pTest1-&gt;GetFstString()<br />        &lt;&lt; " " &lt;&lt; pTest1-&gt;GetLstString()<br />        &lt;&lt; "\nTest2:"<br />        &lt;&lt; pTest2-&gt;GetFstString()<br />        &lt;&lt; " " &lt;&lt; pTest2-&gt;GetLstString() &lt;&lt; "\n\n" &lt;&lt; endl;<br /><br />   delete pTest1;<br />   pTest1 = 0;<br />   delete pTest2;<br />   pTest2 = 0;<br /><br />   cout &lt;&lt; "num after deletion is "<br />        &lt;&lt; Test::GetCount() &lt;&lt; endl;<br /><br />   return 0;<br />       <br />}<br />-------------------------------------------------------------------------------------------<br /><br />Result:<br />before cons is 0<br /> Test cons for FstTest1  LstTest1 called.<br /> Test cons for FstTest2  LstTest2 called.<br />after cons is 2<br /><br />Test1: FstTest1 LstTest1<br />Test2:FstTest2 LstTest2<br /><br /><br /> ~Test() called for FstTest1 LstTest1<br /> ~Test() called for FstTest2 LstTest2<br />num after deletion is 0<br /><br />   Test类在没有对象时，仍然可以引用count成员，但是只能通过调用静态成员函数GetCount()完成.<br />   <font color="#ff3300">没有实例化的对象，一定是用类名调用Test::GetCount(),如果有实例化的对象，则可以用pTest1-&gt;GetCount()<br />调用。我们公司明确规定，所有静态成员函数只能调用类名句柄，不能调用对象句柄，我觉得这样很好。</font><br /><br />   还有一点，如果成员函数不访问非静态数据成员和成员函数，可以将成员函数声明为静态，<font color="#ff3300">与非静态成员函数不同的是，静态成员函数没有this指针，因为静态类数据成员和成员函数是独立于类对象而存才的。</font><br /> <br />   关于断言(assert) , assert类宏在cassert头文件中定义。用于测试条件值，注意assert不运行任何析构函数即可中止程序执行.<font color="#ff3300"> assert不一定要在调试完成后删除，只需在程序文件开头(通常可以在编译器选项中指定)插入语句<br />#define NDEBUG</font><br /><br /></font>
<img src ="http://www.blogjava.net/softgamer/aggbug/99097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/softgamer/" target="_blank">softgamer</a> 2007-02-10 09:12 <a href="http://www.blogjava.net/softgamer/archive/2007/02/10/99097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 初始化类的常量数据成员</title><link>http://www.blogjava.net/softgamer/archive/2007/02/09/99071.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Fri, 09 Feb 2007 14:19:00 GMT</pubDate><guid>http://www.blogjava.net/softgamer/archive/2007/02/09/99071.html</guid><wfw:comment>http://www.blogjava.net/softgamer/comments/99071.html</wfw:comment><comments>http://www.blogjava.net/softgamer/archive/2007/02/09/99071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/softgamer/comments/commentRss/99071.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/softgamer/services/trackbacks/99071.html</trackback:ping><description><![CDATA[
		<font face="Courier New" size="4">如果你想初始化一个类中的常量数据成员，只能用一种方法，在类的构造函数后加一个":",然后初始化那些常量数据成员，<br />以逗号分割。<br /><br />#include &lt;iostream&gt;<br /><br />using std::cout;<br />using std::endl;<br /><br />class Test <br />{<br />  public:<br />    Test(int i = 0, int j = 1 );<br />    void addon() { count += idx; }<br />    void print() const;<br />  private:<br />    int count;<br />    const int idx;<br />    const int idy;<br />};<br /><br />Test::Test( int i, int j ) <br />  <b><font color="#ff3300">:idx( j, i ), idy( j, j )</font></b><br />{<br />   count = j;<br />}<br /><br />void Test::print() const<br />{<br />   cout &lt;&lt; "count= " &lt;&lt; count <br />        &lt;&lt;", idx = " &lt;&lt; idx<br />        &lt;&lt;", idy = " &lt;&lt; idy<br />        &lt;&lt; endl;<br />}<br /><br />int main()<br />{<br />    Test Test1( 20, 7 );<br />    cout &lt;&lt; "Before doing addon: ";<br />    Test1.print();<br />    for ( int k = 0; k &lt; 3; k++ )<br />    {<br />       Test1.addon();<br />       cout &lt;&lt; "After addon " &lt;&lt; k + 1 &lt;&lt; ":";<br />       Test1.print();<br />    } <br />    return 0;<br />}<br /><br />result:<br /><font color="#0000ff">Before doing addon: count= 7, idx = 20, idy = 7<br />After addon 1:count= 27, idx = 20, idy = 7<br />After addon 2:count= 47, idx = 20, idy = 7<br />After addon 3:count= 67, idx = 20, idy = 7</font><br /><br /></font>
<img src ="http://www.blogjava.net/softgamer/aggbug/99071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/softgamer/" target="_blank">softgamer</a> 2007-02-09 22:19 <a href="http://www.blogjava.net/softgamer/archive/2007/02/09/99071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>向诸葛亮老师学习十堂课</title><link>http://www.blogjava.net/softgamer/archive/2007/02/07/98512.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Wed, 07 Feb 2007 02:37:00 GMT</pubDate><guid>http://www.blogjava.net/softgamer/archive/2007/02/07/98512.html</guid><wfw:comment>http://www.blogjava.net/softgamer/comments/98512.html</wfw:comment><comments>http://www.blogjava.net/softgamer/archive/2007/02/07/98512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/softgamer/comments/commentRss/98512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/softgamer/services/trackbacks/98512.html</trackback:ping><description><![CDATA[
		<table style="table-layout: fixed;" border="0" cellpadding="0" cellspacing="0" height="868" width="886">
				<tbody>
						<tr>
								<td>
										<font face="Courier New" size="4">
												<span class="oblog_text">
														<br />     也发一篇灌水文章，它对我帮助很大。不是我写的，是朋友发给我的。我也加了自己的一些理解<br /><br /><span style="font-family: 宋体;">     诸葛亮</span><span style="font-family: Times New Roman;" lang="EN-US">54</span><span style="font-family: 宋体;">岁时写给他</span><span style="font-family: Times New Roman;" lang="EN-US">8</span><span style="font-family: 宋体;">岁
儿子诸葛瞻的《诫子书》，只用了短短八十六字，但是对于为学做人有精简而且具体的忠告。一千八百多年前的智慧，在今天的科技时代，仍然有非常好的参考价
值。以前听人说：“真正的智慧，可以超越时空，历久常新。”初听不知所以，现在觉得所言甚是。让我们一起<st1:personname w:st="on" productid="向诸葛亮">向诸葛亮</st1:personname>老师学习十堂课，在变局中安身立命，在逆境中找到力量。</span><span lang="EN-US"><br /></span><span style="font-family: 宋体;">　　<font color="#0000ff">《诫子书》</font></span><font color="#0000ff"><span lang="EN-US"><br /></span><span style="font-family: 宋体;">　　夫君子之行，靜以修身，儉以養德；非澹泊無以明志，非寧靜無以致遠。夫學須靜也，才須學也；非學無以廣才，非志無以成學。怠慢則不能勵精，險躁則不能冶性。年與時馳，意與歲去，遂成枯落，多不接世。悲守窮廬，將復何及！<br /></span></font><span style="font-family: Times New Roman;" lang="EN-US"><font color="#0000ff"> </font><br /></span><span style="font-family: 宋体;">　<span style="color: red;">　第一课：宁静的力量</span></span><span style="color: red;" lang="EN-US"><br /></span><span style="font-family: 宋体;">　　“静以修身”、“非宁静无以致远”、“学须静也”。诸葛亮忠告孩子宁静才能够修养身心，静思反省。不能够静下来，则不可以有效的计划未来，而且学习的首要条件，就是有宁静的环境。现代人大多数终日忙碌，你是否应在忙乱中静下来，反思人生方向？<br />     </span><span style="font-family: 宋体;"><br />  　<span style="color: red;">第二课：节俭的力量</span></span><span style="color: red;" lang="EN-US"><br /></span><span style="font-family: 宋体;">　　“俭以养德”。诸葛亮忠告孩子要节俭，以培养自己的德行。审慎理财，量入为出，不但可以摆脱负债的困扰，更可以过着纪律的简朴生活，不会成为物质的奴隶。在鼓励消费的文明社会，你有没有想过节俭的好处呢？<br /><br /></span><span lang="EN-US"></span><span style="font-family: 宋体;">　　<span style="color: red;">第三课：计划的力量</span></span><span style="color: red;" lang="EN-US"><br /></span><span style="font-family: 宋体;">　　“非澹泊无以明志”、“非宁静无以致远”。诸葛亮忠告孩子要计划人生，不要事事讲求名利，才能够了解自己的志向，要静下来，才能够细心计划将来。面对未来，你有理想吗？你有使命感吗？你有自己的价值观吗？<br /><br /></span><span lang="EN-US"></span><span style="font-family: 宋体;">　　<span style="color: red;">第四课：学习的力量</span></span><span style="color: red;" lang="EN-US"><br /></span><span style="font-family: 宋体;">　　“夫学须静也”、“才须学也”。诸葛亮忠告孩子宁静的环境对学习大有帮助，当然配合专注的平静心境，就更加事半功倍。诸葛亮不是天才论的信徒，他相信才能是学习的结果。你是没有全心全力的学习？你是否相信努力才有成就呢？<br /><br /></span><span lang="EN-US"></span><span style="font-family: 宋体;">　<span style="color: red;">　第五课：增值的力量</span></span><span style="color: red;" lang="EN-US"><br /></span><span style="font-family: 宋体;">　　“非学无以广才”、“非志无以成学”。诸葛亮忠告孩子要增值先要立志，不愿意努力学习，就不能够增加自己的才干。但学习的过程中，决心和毅力非常重要，因为缺乏了意志力，就会半途而废。你有没有想过，一鼓作气的人多，坚持到底的人少的道理呢？<br /><br /></span><span lang="EN-US"></span><span style="font-family: 宋体;">　<span style="color: red;">　第六课：速度的力量</span></span><span style="color: red;" lang="EN-US"><br /></span><span style="font-family: 宋体;">　　“怠慢则不能励精”。诸葛亮忠告孩子凡事拖延就不能够快速的掌握要点。计算机时代是十倍速的时代，样样事情讲求效率，想不到一千八百多年前的智慧，也一样不谋而合。快人一步，理想就能实现。你有没有想过，有更多时间去修正及改善，以达成你的人生目标呢？<br /><br /></span><span lang="EN-US"></span><span style="font-family: 宋体;">　　<span style="color: red;">第七课：性格的力量</span></span><span lang="EN-US"><br /></span><span style="font-family: 宋体;">　　“险躁则不能冶性”。诸葛亮忠告孩子太过急躁就不能够陶冶性情。心理学家说：“思想影响行为，行为影响习惯，习惯影响性格，性格影响命运。”诸葛亮明白生命中要作出种种平衡，要励精，也要冶性。你要提升自己性格的品质吗？<br /><br /></span><span lang="EN-US"></span><span style="font-family: 宋体;">　　<span style="color: red;">第八课：时间的力量</span></span><span style="color: red;" lang="EN-US"><br /></span><span style="font-family: 宋体;">　　“年与时驰”、“意与岁去”。诸葛亮忠告孩子时光飞逝，意志力又会随着时间消磨，少壮不努力，老大徒伤悲，时间管理是个现代人的观念，细心想一想，时间不可以被管理，每天二十四小时，不多也不少，惟有管理自己，善用每分每秒。请你想一想，你有蹉跎岁月吗？<br /><br /></span><span lang="EN-US"></span><span style="font-family: 宋体;">　　<span style="color: red;">第九课：想象的力量</span></span><span style="color: red;" lang="EN-US"><br /></span><span style="font-family: 宋体;">　　“遂成枯落”、“多不接世”、“悲守穷庐”、“将复何及”。诸葛亮忠告孩子时光飞逝，当自己变得和世界脱节，才悲叹蹉跎岁月，也于事无补。要懂得居安思危，才能够临危不乱。想象力比知识更有力量。你有没有从大处着想，小处着手，脚踏实地，规划自己的人生呢？</span><span lang="EN-US"><br /></span><span style="font-family: 宋体;"><br />　<span style="color: red;">　第十课：精简的力量</span></span><span style="color: red;" lang="EN-US"><br /></span><span style="font-family: 宋体;">　　以上诸葛亮写给儿子的一封信，只用了短短八十六字，精简地传递了具体的讯息。我相信精简的表达源于清晰的思想，长篇大论的内容，容易令人生厌，精简沟通更有效果。你懂得言之有物地精简沟通吗？</span><span lang="EN-US"><br /></span><span style="font-family: 宋体;"><br />　　从以上的十堂课之中，你能够找到一点启发吗？请你百忙之中静下来，用下面的题目向你的人生提问，在改变中不断改善。</span><span lang="EN-US"><br /></span><span style="font-family: 宋体;">　　<font color="#ff3300">不要问：自己得到些什么？应该问：自己付出过什么？</font></span><font color="#ff3300"><span lang="EN-US"><br /></span><span style="font-family: 宋体;">　　不要问：自己的地位如何？应该问：自己的心地如何？</span></font></span>
										</font>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/softgamer/aggbug/98512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/softgamer/" target="_blank">softgamer</a> 2007-02-07 10:37 <a href="http://www.blogjava.net/softgamer/archive/2007/02/07/98512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 引用</title><link>http://www.blogjava.net/softgamer/archive/2007/02/05/97990.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Mon, 05 Feb 2007 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/softgamer/archive/2007/02/05/97990.html</guid><wfw:comment>http://www.blogjava.net/softgamer/comments/97990.html</wfw:comment><comments>http://www.blogjava.net/softgamer/archive/2007/02/05/97990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/softgamer/comments/commentRss/97990.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/softgamer/services/trackbacks/97990.html</trackback:ping><description><![CDATA[
		<font face="Courier New" size="4">
				<font color="#0000ff" size="5">引用和引用参数</font>
				<br />
				<br />   C++,其实Java 和 c 都一样, 调用函数的方法有两种<br /><font color="#ff1493"><br />   传值调用和引用调用。<br /><br /></font>   参数传值调用时，<font color="#ff3300">会产生该参数值得副本并将副本传递给被调用的函数，对副本的更改不会影响调用者的原始变量值</font>，<br />它的优点显而易见，，缺点是复制数据会花费较长的时间。<br /><br />  引用调用的优点就是避免复制大量的数据，但安全性差，<font color="#ff3300">因为被调用的函数会直接访问并修改调用者的数据，使用是要格外小心</font><br /><br />#include &lt;iostream&gt;<br /><br />using std::cout;<br />using std::endl;<br /><br />int   pbyValue( int );<br />void  pByRef ( int &amp; );<br /><br />int main ()<br />{<br />    int x = 2;<br />    int z = 4;<br /><br />    cout &lt;&lt; "x= " &lt;&lt; x &lt;&lt; " before pByvalue \n"<br />         &lt;&lt;"Getting value by pByValue: "<br />         &lt;&lt; pbyValue( x ) &lt;&lt; endl<br />         &lt;&lt; "x : " &lt;&lt; x &lt;&lt; " Got Value\n" &lt;&lt;endl;<br />    <br />    cout &lt;&lt; "z= " &lt;&lt; z &lt;&lt; " before pBy Ref \n" &lt;&lt; endl;<br />         <br />    pByRef( z );<br />         <br />    cout &lt;&lt; "z : " &lt;&lt; z &lt;&lt; " Got Value\n" &lt;&lt;endl;<br />    <br />    return 0;<br /><br />}<br /><br />int pbyValue ( int a )<br />{<br />    return a *= a;<br />}<br /><br />void pByRef( int &amp;cRef )<br />{<br />    cRef *= cRef;<br />}<br /><br /></font>
<img src ="http://www.blogjava.net/softgamer/aggbug/97990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/softgamer/" target="_blank">softgamer</a> 2007-02-05 14:23 <a href="http://www.blogjava.net/softgamer/archive/2007/02/05/97990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 存储类</title><link>http://www.blogjava.net/softgamer/archive/2007/02/05/97943.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Mon, 05 Feb 2007 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/softgamer/archive/2007/02/05/97943.html</guid><wfw:comment>http://www.blogjava.net/softgamer/comments/97943.html</wfw:comment><comments>http://www.blogjava.net/softgamer/archive/2007/02/05/97943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/softgamer/comments/commentRss/97943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/softgamer/services/trackbacks/97943.html</trackback:ping><description><![CDATA[
		<font face="Courier New" size="4">
				<font color="#0000ff" size="5">存储类</font>
				<br />  在C++中有5个存储类说明符，<font color="#ff0000">auto,register, extern mutable 和static.</font><br />存储类说明符可以分为两个存储类，"自动存储类"和"静态存储类"<br /><br />  auto和register用于声明自动存储类的变量，此类变量是在进入声明的块时创建的，<font color="#ff3300">它们只存在与块被激活的期间</font>，当程序执行退出块时，这些变量就会被删除。<br /><br /><font color="#ff3300">  只有变量可以作为自动存储类，函数的局部变量和参数通常属于自动存储类</font>。<br /><br />     auto double x, y;<br /><font color="#ff3300"><br />   注意：用自动存储可以节省内存，我做程序的宗旨就是简单有效的是使用内存，为了能有效的使用内存，<br />我都是尽量有效的规划我的资源.</font><br /><br />   对比auto,<font color="#ff3300">register 只能随局部变量和函数参数一起使用</font>。<br /><br />     register int x = 1;<br />   <br />    关键字extern 和 static 是用于声明变量和静态存储类函数的说明符，它们存在于程序开始执行时，程序在开始时就为它们分配了初始化的存储空间，<font color="#ff3300">但并不意味着这些标识符可用于整个程序中，其还有作用域的约束 。 </font>  <br />  </font>
		<br />
<img src ="http://www.blogjava.net/softgamer/aggbug/97943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/softgamer/" target="_blank">softgamer</a> 2007-02-05 11:04 <a href="http://www.blogjava.net/softgamer/archive/2007/02/05/97943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 类型</title><link>http://www.blogjava.net/softgamer/archive/2007/02/02/97510.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Fri, 02 Feb 2007 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/softgamer/archive/2007/02/02/97510.html</guid><wfw:comment>http://www.blogjava.net/softgamer/comments/97510.html</wfw:comment><comments>http://www.blogjava.net/softgamer/archive/2007/02/02/97510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/softgamer/comments/commentRss/97510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/softgamer/services/trackbacks/97510.html</trackback:ping><description><![CDATA[
		<font face="Courier New" size="4">我在使用C++时有一些体会，相信大家都会的。我写出来也是和大家分享一下<br />1。在C++中数据类型float和double.<br />     同类型为float的变量相比，类型为double的变量可保存的值较大且较为准确，因此我比较喜欢使用double而不是float.这里有一个重要的点要说一下：比如我们定义两个变量<br />     int sum = 1230;<br />     int score = 230;<br />     double avrg  = 0.0f;<br />     如果我们用：<br />     avrg = sum/score;<br />     其中（sum/score）这个计算结果是一个整型, 因为sum和score都是整型。在这样的计算中。小数部分会<br />    丢失，因此C++提供了一元强制类型转换<br />     avrg = static_cast&lt; double &gt; ( sum ) / score;<br /><br />   <font color="#ff3300"> static_cast &lt; double &gt; (), 这位sum创建了一个临时性的浮点数副本，这就是我们说的显式转换。对比显式转换，当然就是隐式转换，例如当score 被提升为double后，开始执行浮点除法运算。</font><br />    然后我们输出<br />    cout &lt;&lt; "aver is " &lt;&lt; setprecision(2)<br />            &lt;&lt;setiosflags( ios::fixedm ios::showpoint )<br />            &lt;&lt; avrg &lt;&lt;endl;<br />   setprecision(2) 是被称作参数化操作元的东西，要加一条预编译指令<br />   #include &lt;iomanip&gt;<br />   endl是一个非参数化操纵元，它不需要&lt;iomanip&gt;头文件，如果未指定精度，浮点值会采用6个精度(默认)输出。<br />  <font color="#ff3300"> 注意不要愚蠢的想比较两个浮点数是否相等，应该测试两个浮点数的差值的绝对值是否小于一个指定的小值。这一点在游戏的坐标跟踪中常被用到。</font><br /><br /># include &lt;iostream&gt;<br /><br />using std::cout;<br />using std::cin;<br />using std::endl;<br />using std::ios;<br /><br /># include &lt;iomanip&gt;<br /><br />using std::setprecision;<br />using std::setiosflags;<br /><br />int main()<br />{<br />    int score = 0;<br />    int sum = 0;<br />    int count = 0;<br /><br />    double avrg;<br /><br />    cout&lt;&lt;"enter score - to end: ";<br />    cin&gt;&gt;score;<br />    while ( score != -1 )<br />    {<br />        sum = sum + score;<br />        count = count + 1;<br />        cout&lt;&lt; "enter score , -1 to end : ";<br />        cin&gt;&gt;score;<br />    }<br /><br />    if( count != 0 )<br />    {<br />        avrg = static_cast&lt; double &gt; (sum ) / count;<br />        cout &lt;&lt; "avrg is " &lt;&lt; setprecision(2)<br />            &lt;&lt; setiosflags(ios::fixed | ios::showpoint )<br />            &lt;&lt; avrg &lt;&lt; endl;<br />    }<br />    else<br />    {    cout &lt;&lt; " NO!!!!!";<br /><br />    }<br />    return 0;<br />}<br /><br />enter score - to end: 75<br />enter score , -1 to end : 93<br />enter score , -1 to end : 23<br />enter score , -1 to end : 98<br />enter score , -1 to end : 43<br />enter score , -1 to end : 54<br />enter score , -1 to end : 56<br />enter score , -1 to end : 2334<br />enter score , -1 to end : 45<br />enter score , -1 to end : 43<br />enter score , -1 to end : 454<br />enter score , -1 to end : 232<br />enter score , -1 to end : -1<br />avrg is 295.83<br /><br /> </font>
<img src ="http://www.blogjava.net/softgamer/aggbug/97510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/softgamer/" target="_blank">softgamer</a> 2007-02-02 14:04 <a href="http://www.blogjava.net/softgamer/archive/2007/02/02/97510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>