﻿<?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>C++博客-通关旅-随笔分类-学习日志</title><link>http://www.cppblog.com/softgamer/category/3591.html</link><description>softgamer的痕迹</description><language>zh-cn</language><lastBuildDate>Fri, 18 Jul 2008 04:07:09 GMT</lastBuildDate><pubDate>Fri, 18 Jul 2008 04:07:09 GMT</pubDate><ttl>60</ttl><item><title>C++体会 -- 类</title><link>http://www.cppblog.com/softgamer/archive/2008/07/17/56456.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Thu, 17 Jul 2008 09:56:00 GMT</pubDate><guid>http://www.cppblog.com/softgamer/archive/2008/07/17/56456.html</guid><wfw:comment>http://www.cppblog.com/softgamer/comments/56456.html</wfw:comment><comments>http://www.cppblog.com/softgamer/archive/2008/07/17/56456.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/softgamer/comments/commentRss/56456.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/softgamer/services/trackbacks/56456.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在这里不说类的概念了，大家都清楚，只是说说关于类的注意事项<br>  1.类的数据成员不能在类体中声明时初始化，而害死要用类的构造函数初始化，或者用set 函数赋值<br>  2.析构函数能不能被重载？不能，因为析构函数不能带参数，所以不能重载<br>  3.外部访问private类成员只能用public类接口通过public成员函数访问。尽量使所有类的成员保持private&nbsp;&nbsp;<a href='http://www.cppblog.com/softgamer/archive/2008/07/17/56456.html'>阅读全文</a><img src ="http://www.cppblog.com/softgamer/aggbug/56456.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/softgamer/" target="_blank">softgamer</a> 2008-07-17 17:56 <a href="http://www.cppblog.com/softgamer/archive/2008/07/17/56456.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 随机数</title><link>http://www.cppblog.com/softgamer/archive/2008/07/17/56425.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Thu, 17 Jul 2008 06:23:00 GMT</pubDate><guid>http://www.cppblog.com/softgamer/archive/2008/07/17/56425.html</guid><wfw:comment>http://www.cppblog.com/softgamer/comments/56425.html</wfw:comment><comments>http://www.cppblog.com/softgamer/archive/2008/07/17/56425.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/softgamer/comments/commentRss/56425.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/softgamer/services/trackbacks/56425.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:     在游戏的设计中，常用到随机数的概念，如飞行轨迹， 敌人的多少与出现的位置等等。常常我们总是调用rand()函数，它的原型在<cstlib.h><br> 中，比如为了生成0-10之间的整数，通常采用求模符(%)和rand()函数&nbsp;&nbsp;<a href='http://www.cppblog.com/softgamer/archive/2008/07/17/56425.html'>阅读全文</a><img src ="http://www.cppblog.com/softgamer/aggbug/56425.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/softgamer/" target="_blank">softgamer</a> 2008-07-17 14:23 <a href="http://www.cppblog.com/softgamer/archive/2008/07/17/56425.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 静态数据成员</title><link>http://www.cppblog.com/softgamer/archive/2007/02/10/18593.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Sat, 10 Feb 2007 01:10:00 GMT</pubDate><guid>http://www.cppblog.com/softgamer/archive/2007/02/10/18593.html</guid><wfw:comment>http://www.cppblog.com/softgamer/comments/18593.html</wfw:comment><comments>http://www.cppblog.com/softgamer/archive/2007/02/10/18593.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/softgamer/comments/commentRss/18593.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/softgamer/services/trackbacks/18593.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.cppblog.com/softgamer/aggbug/18593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/softgamer/" target="_blank">softgamer</a> 2007-02-10 09:10 <a href="http://www.cppblog.com/softgamer/archive/2007/02/10/18593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 初始化类的常量数据成员</title><link>http://www.cppblog.com/softgamer/archive/2007/02/09/18588.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Fri, 09 Feb 2007 14:21:00 GMT</pubDate><guid>http://www.cppblog.com/softgamer/archive/2007/02/09/18588.html</guid><wfw:comment>http://www.cppblog.com/softgamer/comments/18588.html</wfw:comment><comments>http://www.cppblog.com/softgamer/archive/2007/02/09/18588.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/softgamer/comments/commentRss/18588.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/softgamer/services/trackbacks/18588.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 /></font>
<img src ="http://www.cppblog.com/softgamer/aggbug/18588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/softgamer/" target="_blank">softgamer</a> 2007-02-09 22:21 <a href="http://www.cppblog.com/softgamer/archive/2007/02/09/18588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>向诸葛亮老师学习十堂课</title><link>http://www.cppblog.com/softgamer/archive/2007/02/07/18499.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Wed, 07 Feb 2007 02:42:00 GMT</pubDate><guid>http://www.cppblog.com/softgamer/archive/2007/02/07/18499.html</guid><wfw:comment>http://www.cppblog.com/softgamer/comments/18499.html</wfw:comment><comments>http://www.cppblog.com/softgamer/archive/2007/02/07/18499.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/softgamer/comments/commentRss/18499.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/softgamer/services/trackbacks/18499.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.cppblog.com/softgamer/aggbug/18499.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/softgamer/" target="_blank">softgamer</a> 2007-02-07 10:42 <a href="http://www.cppblog.com/softgamer/archive/2007/02/07/18499.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 引用</title><link>http://www.cppblog.com/softgamer/archive/2007/02/05/18409.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Mon, 05 Feb 2007 13:05:00 GMT</pubDate><guid>http://www.cppblog.com/softgamer/archive/2007/02/05/18409.html</guid><wfw:comment>http://www.cppblog.com/softgamer/comments/18409.html</wfw:comment><comments>http://www.cppblog.com/softgamer/archive/2007/02/05/18409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/softgamer/comments/commentRss/18409.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/softgamer/services/trackbacks/18409.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 /></font>
<img src ="http://www.cppblog.com/softgamer/aggbug/18409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/softgamer/" target="_blank">softgamer</a> 2007-02-05 21:05 <a href="http://www.cppblog.com/softgamer/archive/2007/02/05/18409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 内联函数</title><link>http://www.cppblog.com/softgamer/archive/2007/02/05/18408.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Mon, 05 Feb 2007 13:04:00 GMT</pubDate><guid>http://www.cppblog.com/softgamer/archive/2007/02/05/18408.html</guid><wfw:comment>http://www.cppblog.com/softgamer/comments/18408.html</wfw:comment><comments>http://www.cppblog.com/softgamer/archive/2007/02/05/18408.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/softgamer/comments/commentRss/18408.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/softgamer/services/trackbacks/18408.html</trackback:ping><description><![CDATA[    <font face="Courier New"><font color="#0000ff" size="5">内联函数</font><br /><br /></font>   <font size="4"></font><font face="Courier New" size="4">C++ 提供了内联函数（inline functions ），主要用于减少函数所使用的开销，尤其对于小型函数<br /><br />   函数返回类型之前的限定符inline 让编译器在适当的程序部分生成函数的副本，以避免函数调用，这样使程序中插入多个函数<br />代码的副本，令程序增大。而不是一个函数的副本（每次调用函数时，控制都会传到函数中）。<br /><br />   对内联函数的更改都需要重新编译该函数的所有调用者，这会大大影响程序的维护，所以inline用于小型的，使用频繁的函数最好.<br />而且</font><font size="4"></font><font face="Courier New" size="4">内联函数</font><font size="4"></font><font face="Courier New" size="4">也使程序的执行时间减少，但在编译时增大了程序的长度，当然也不绝对，有时也会减小程序长度，特别是</font><font size="4"></font><font face="Courier New" size="4">内联函数是非常小的函数时。<br /><br /></font><font face="Courier New" size="4"><br />   题外话， <font color="#ff3300">使用const的目的在函数中只是保护原始实参的副本，而不是原始实参本身。</font><br /><br /></font><font face="Courier New"><font size="4"><br /> </font><font size="4"><br /><br /></font><br /></font><img src ="http://www.cppblog.com/softgamer/aggbug/18408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/softgamer/" target="_blank">softgamer</a> 2007-02-05 21:04 <a href="http://www.cppblog.com/softgamer/archive/2007/02/05/18408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 存储类</title><link>http://www.cppblog.com/softgamer/archive/2007/02/05/18407.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Mon, 05 Feb 2007 13:02:00 GMT</pubDate><guid>http://www.cppblog.com/softgamer/archive/2007/02/05/18407.html</guid><wfw:comment>http://www.cppblog.com/softgamer/comments/18407.html</wfw:comment><comments>http://www.cppblog.com/softgamer/archive/2007/02/05/18407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/softgamer/comments/commentRss/18407.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/softgamer/services/trackbacks/18407.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></font>
<img src ="http://www.cppblog.com/softgamer/aggbug/18407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/softgamer/" target="_blank">softgamer</a> 2007-02-05 21:02 <a href="http://www.cppblog.com/softgamer/archive/2007/02/05/18407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++体会 -- 类型</title><link>http://www.cppblog.com/softgamer/archive/2007/02/05/18406.html</link><dc:creator>softgamer</dc:creator><author>softgamer</author><pubDate>Mon, 05 Feb 2007 13:00:00 GMT</pubDate><guid>http://www.cppblog.com/softgamer/archive/2007/02/05/18406.html</guid><wfw:comment>http://www.cppblog.com/softgamer/comments/18406.html</wfw:comment><comments>http://www.cppblog.com/softgamer/archive/2007/02/05/18406.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/softgamer/comments/commentRss/18406.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/softgamer/services/trackbacks/18406.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</font>
<img src ="http://www.cppblog.com/softgamer/aggbug/18406.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/softgamer/" target="_blank">softgamer</a> 2007-02-05 21:00 <a href="http://www.cppblog.com/softgamer/archive/2007/02/05/18406.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>