﻿<?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++博客-Rookie Engineer -随笔分类-C++</title><link>http://www.cppblog.com/micwu/category/16978.html</link><description>If you aren't the kind of person that feels this way naturally, you'll need to become one in order to make it as a hacker. Otherwise you'll find your hacking energy is sapped by distractions like sex, money, and social approval.</description><language>zh-cn</language><lastBuildDate>Tue, 11 Mar 2014 07:57:37 GMT</lastBuildDate><pubDate>Tue, 11 Mar 2014 07:57:37 GMT</pubDate><ttl>60</ttl><item><title> “.f” appended to a number</title><link>http://www.cppblog.com/micwu/archive/2014/03/11/206131.html</link><dc:creator>micwu</dc:creator><author>micwu</author><pubDate>Tue, 11 Mar 2014 06:27:00 GMT</pubDate><guid>http://www.cppblog.com/micwu/archive/2014/03/11/206131.html</guid><wfw:comment>http://www.cppblog.com/micwu/comments/206131.html</wfw:comment><comments>http://www.cppblog.com/micwu/archive/2014/03/11/206131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/micwu/comments/commentRss/206131.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/micwu/services/trackbacks/206131.html</trackback:ping><description><![CDATA[<div><span style="font-family: Arial">e.g.</span><br /><span style="font-family: Arial">1/3. means 1/3.0.</span><br /><font face="Courier New"><span style="font-family: Arial" class="comment-copy">A simple question:<br /></span><span style="font-family: Arial">3.</span></font><span style="font-family: Arial"> is equivalent to </span><code><span style="font-family: Arial">3.0</span></code><span style="font-family: Arial">, it's a double.</span><br /><font face="Courier New"><span style="font-family: Arial">f</span></font><span style="font-family: Arial"> following a number literal makes it a floa</span>t.<br /><br /><a href="http://stackoverflow.com/questions/4828167/purpose-of-a-f-appended-to-a-number">http://stackoverflow.com/questions/4828167/purpose-of-a-f-appended-to-a-number</a></div><img src ="http://www.cppblog.com/micwu/aggbug/206131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/micwu/" target="_blank">micwu</a> 2014-03-11 14:27 <a href="http://www.cppblog.com/micwu/archive/2014/03/11/206131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>异常 Exception</title><link>http://www.cppblog.com/micwu/archive/2013/04/29/199822.html</link><dc:creator>micwu</dc:creator><author>micwu</author><pubDate>Mon, 29 Apr 2013 01:57:00 GMT</pubDate><guid>http://www.cppblog.com/micwu/archive/2013/04/29/199822.html</guid><wfw:comment>http://www.cppblog.com/micwu/comments/199822.html</wfw:comment><comments>http://www.cppblog.com/micwu/archive/2013/04/29/199822.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/micwu/comments/commentRss/199822.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/micwu/services/trackbacks/199822.html</trackback:ping><description><![CDATA[<div class="sectionblock">
<p style="text-indent: 21.2pt; margin: 0in 0in 0pt">一个exception就是程序运行时发生的异常情况. Exceptions经常显示你必须去DEBUG的问题的迹象.&nbsp;如果exception没有在<span><a href="http://msdn.microsoft.com/en-us/library/85yzd16c.aspx">General, Debugging, Options Dialog Box</a></span>里面被disable, 那么当一个exception产生时debugger(调试器)就会写一个exception消息到输出窗口. <span id="result_box" lang="zh-CN" class="short_text" closure_uid_999976885="36" a="undefined" c="4"><span closure_uid_999976885="290">debugger可能会</span><span closure_uid_999976885="291">或</span><span closure_uid_999976885="292">可能不会</span><span closure_uid_999976885="293">发生异常</span><span closure_uid_999976885="294">时</span><span closure_uid_999976885="295">中断执行</span><span closure_uid_999976885="296">。<br />&nbsp;&nbsp;&nbsp;&nbsp;如果发生了一个</span></span>non-ASP.NET exception而且没有被handled, debugger always breaks execution.<br />&nbsp;&nbsp;&nbsp;&nbsp;在any handler被调用之前, 你可以直接让debugger去break execution当an exception被抛出. For more information, see <span><a href="http://msdn.microsoft.com/en-us/library/d14azbfh.aspx">How to: Break When an Exception is Thrown</a></span>.&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;如果你在用<span><a href="http://msdn.microsoft.com/en-us/library/h5e30exc.aspx">How to: Step Into Just My Code</a></span>&nbsp;debug, 你有另外的一个选择. 你可以让debugger去break on any exception that is not handled by a handler in user code ("My Code"). For more information, see <span><a href="http://msdn.microsoft.com/en-us/library/038tzxdw.aspx">How to: Break on User-Unhandled Exceptions</a></span><br />&nbsp;&nbsp;&nbsp;&nbsp;ASP.NET has a top-level exception handler that handles exceptions to show error pages to browser users. That top-level exception handler will stop an unhandled exception from breaking into the debugger unless Just My Code is turned on. Make sure that you enable Just My Code for ASP.NET debugging<br />&nbsp;&nbsp;&nbsp;&nbsp;Remember, if an exception occurs and is not handled at all, the debugger always breaks. The user-unhandled setting does not change that.</p>
<p><br />The Visual Studio debugger 分为5种类型的exceptions:<br />&nbsp;&nbsp;&nbsp;1. C++ exceptions -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exceptions thrown from native code.<br />&nbsp;&nbsp;&nbsp;2. Common language runtime(CLR) exceptions -&nbsp;Exceptions thrown in managed code.<br />&nbsp;&nbsp;&nbsp;3. Managed debugging assistants -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Errors reported to the debugger that indicate problems in the program being debugged, but are not actual exceptions.<br />&nbsp;&nbsp;&nbsp;4. Native Run-time checks &#8212;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Errors reported by the CRT for common programming errors.<br />&nbsp;&nbsp;&nbsp;5. Win32 Exceptions &#8212;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Operating system error codes such as Control + C and Access Violation.<br /><br />第三方的debugging engines 也可以加项目到这个列表. 这是个正常的enumerable 集合, indexable by either group name and by integer index.</p>
<p><span id="result_box" lang="zh-CN" closure_uid_999976885="36" a="undefined" c="4"><span closure_uid_999976885="332">大多数异常</span><span closure_uid_999976885="333">旨在</span><span closure_uid_999976885="334">应对</span><span closure_uid_999976885="335">一个异常</span><span closure_uid_999976885="336">发生时</span><span closure_uid_999976885="337">的</span><span closure_uid_999976885="338">处理</span><span closure_uid_999976885="339">程序</span><span closure_uid_999976885="340">。</span><span closure_uid_999976885="341">这</span><span closure_uid_999976885="342">使</span><span closure_uid_999976885="343">程序</span><span closure_uid_999976885="344">恢复</span><span closure_uid_999976885="345">的</span><span closure_uid_999976885="346">异常</span><span closure_uid_999976885="347">情况</span><span closure_uid_999976885="348">的机会</span><span closure_uid_999976885="349">。</span><span closure_uid_999976885="350">Native run-time</span><span closure_uid_999976885="353">检查</span><span closure_uid_999976885="354">没有</span><span closure_uid_999976885="355">处理程序。</span></span></p>
<p>In a Visual Basic application, the debugger represents all errors as exceptions, even if you use <span class="code">On Error</span>&#8211;style error handlers.</p>
<p>For Visual Basic, and C#, the debugger now features a new <span><a href="http://msdn.microsoft.com/en-us/library/197c1fsc.aspx">Exception Assistant</a></span> that provides more information when an exception occurs.</p>
<p>The following topics provide information on handling exceptions: </p></div><img src ="http://www.cppblog.com/micwu/aggbug/199822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/micwu/" target="_blank">micwu</a> 2013-04-29 09:57 <a href="http://www.cppblog.com/micwu/archive/2013/04/29/199822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>atexit</title><link>http://www.cppblog.com/micwu/archive/2012/08/21/187802.html</link><dc:creator>micwu</dc:creator><author>micwu</author><pubDate>Mon, 20 Aug 2012 16:46:00 GMT</pubDate><guid>http://www.cppblog.com/micwu/archive/2012/08/21/187802.html</guid><wfw:comment>http://www.cppblog.com/micwu/comments/187802.html</wfw:comment><comments>http://www.cppblog.com/micwu/archive/2012/08/21/187802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/micwu/comments/commentRss/187802.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/micwu/services/trackbacks/187802.html</trackback:ping><description><![CDATA[函数名: atexit 
<div class="spctrl"></div>　　头文件:#include&lt;stdlib.h&gt; 
<div class="spctrl"></div>　　功 能: 注册终止函数(即main执行结束后调用的函数) 
<div class="spctrl"></div>　　用 法: int atexit(void (*func)(void)); 
<div class="spctrl"></div>　　注意：按照ISO C的规定，一个进程可以登记多达32个函数，这些函数将由exit自动调用。atexit（）注册的函数类型应为不接受任何参数的void函数,exit调用这些注册函数的顺序与它们 登记时候的顺序相反。同一个函数如若登记多次，则也会被调用多次。<br /><br />#include "iostream"<br />using namespace std;<br /><br />void func1()<br />{<br />&nbsp;&nbsp;&nbsp;cout&lt;&lt;"func1()"&lt;&lt;endl;<br />}<br /><br />void func2()<br />{<br />&nbsp;&nbsp;&nbsp;cout&lt;&lt;"func2()"&lt;&lt;endl;<br />}<br /><br />void main()<br />{<br />&nbsp;&nbsp;&nbsp;atexit(func1);<br />&nbsp;&nbsp;&nbsp;atexit(func2);<br />&nbsp;&nbsp;&nbsp;cout&lt;&lt;"main fun exit"&lt;&lt;endl;<br />}<br /><br />输出：<br />main fun exit<br />func2()<br />func1()<img src ="http://www.cppblog.com/micwu/aggbug/187802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/micwu/" target="_blank">micwu</a> 2012-08-21 00:46 <a href="http://www.cppblog.com/micwu/archive/2012/08/21/187802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]C++中的hashMap</title><link>http://www.cppblog.com/micwu/archive/2011/11/11/159951.html</link><dc:creator>micwu</dc:creator><author>micwu</author><pubDate>Fri, 11 Nov 2011 02:29:00 GMT</pubDate><guid>http://www.cppblog.com/micwu/archive/2011/11/11/159951.html</guid><wfw:comment>http://www.cppblog.com/micwu/comments/159951.html</wfw:comment><comments>http://www.cppblog.com/micwu/archive/2011/11/11/159951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/micwu/comments/commentRss/159951.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/micwu/services/trackbacks/159951.html</trackback:ping><description><![CDATA[<br />[转]<a href="http://biancheng.dnbcw.info/c/170128.html">http://biancheng.dnbcw.info/c/170128.html</a><br /><br />标准std中只有map,是使用平衡二叉树实现的，查找和添加的复杂度都为O(log(n)), <br />没有提供hash map,gnu c++提供了hash_map，是一个hash map的实现，查找和添加复杂 <br />度均为O(1)。 <br /><pre name="code">#include &lt;ext/hash_map&gt;
#include &lt;iostream&gt;
#include &lt;cstring&gt;

using namespace std; 
using namespace __gnu_cxx;

struct eqstr{
	bool operator()(const char *s1, const char *s2)const{
		return strcmp(s1,s2) == 0;
	}
};

int main(){
	hash_map&lt;const char *,int,hash&lt;const char *&gt;,eqstr&gt; months;
	months["january"] = 31;
	months["february"] = 28;
	months["march"] = 31;
	cout &lt;&lt; "march -&gt; " &lt;&lt; months["march"] &lt;&lt; endl;
}
</pre><br />不过gnu hash_map和c++ stl的api不兼容，c++ tr1(C++ Technical Report <br />1)作为标准的扩展，实现了hash map,提供了和stl兼容一致的api,称为unorder_map.在头文件 <br />&lt;tr1/unordered_map&gt;中。另外c++ tr1还提供了<a href="http://biancheng.dnbcw.info/zhengzebiaodashi/">正则表达式</a>、智能指针、hash table、 <br />随机数生成器的功能。 <br /><pre name="code">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;tr1/unordered_map&gt;
using namespace std;

int main(){
	typedef std::tr1::unordered_map&lt;int,string&gt; hash_map;
	hash_map hm;
	hm.insert(std::pair&lt;int,std::string&gt;(0,"Hello"));
	hm[1] = "World";
	for(hash_map::const_iterator it = hm.begin(); it != hm.end(); ++it){
		cout &lt;&lt; it-&gt;first &lt;&lt; "-&gt; " &lt;&lt; it-&gt;second &lt;&lt; endl;
	}
	return 0;
}
</pre><img src ="http://www.cppblog.com/micwu/aggbug/159951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/micwu/" target="_blank">micwu</a> 2011-11-11 10:29 <a href="http://www.cppblog.com/micwu/archive/2011/11/11/159951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ STL Set</title><link>http://www.cppblog.com/micwu/archive/2011/11/01/159449.html</link><dc:creator>micwu</dc:creator><author>micwu</author><pubDate>Tue, 01 Nov 2011 05:45:00 GMT</pubDate><guid>http://www.cppblog.com/micwu/archive/2011/11/01/159449.html</guid><wfw:comment>http://www.cppblog.com/micwu/comments/159449.html</wfw:comment><comments>http://www.cppblog.com/micwu/archive/2011/11/01/159449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/micwu/comments/commentRss/159449.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/micwu/services/trackbacks/159449.html</trackback:ping><description><![CDATA[<div><br />Internally, the elements in a <tt>set</tt> are always sorted from lower to higher following a specific strict weak ordering criterion set on container construction.<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">set</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">map</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;Node<br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img id="Codehighlighter1_43_436_Open_Image" onclick="this.style.display='none'; Codehighlighter1_43_436_Open_Text.style.display='none'; Codehighlighter1_43_436_Closed_Image.style.display='inline'; Codehighlighter1_43_436_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_43_436_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_43_436_Closed_Text.style.display='none'; Codehighlighter1_43_436_Open_Image.style.display='inline'; Codehighlighter1_43_436_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_43_436_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_43_436_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;s;<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;a;<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;b[</span><span style="color: #000000">9</span><span style="color: #000000">];<br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /></span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">operator</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">(</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;Node</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;node)&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000"><br /></span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_135_378_Open_Image" onclick="this.style.display='none'; Codehighlighter1_135_378_Open_Text.style.display='none'; Codehighlighter1_135_378_Closed_Image.style.display='inline'; Codehighlighter1_135_378_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_135_378_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_135_378_Closed_Text.style.display='none'; Codehighlighter1_135_378_Open_Image.style.display='inline'; Codehighlighter1_135_378_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_135_378_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_135_378_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;if(this-&gt;a&nbsp;==&nbsp;d.a)<br /></span><span style="color: #008080">13</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;return&nbsp;this-&gt;s&nbsp;&lt;d.s;</span><span style="color: #008000"><br /></span><span style="color: #008080">14</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;;i</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(node.b);i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /></span><span style="color: #008080">15</span><span style="color: #000000"><img id="Codehighlighter1_253_350_Open_Image" onclick="this.style.display='none'; Codehighlighter1_253_350_Open_Text.style.display='none'; Codehighlighter1_253_350_Closed_Image.style.display='inline'; Codehighlighter1_253_350_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_253_350_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_253_350_Closed_Text.style.display='none'; Codehighlighter1_253_350_Open_Image.style.display='inline'; Codehighlighter1_253_350_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_253_350_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_253_350_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">16</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">this</span><span style="color: #000000">-&gt;</span><span style="color: #000000">b[i]&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;node.b[i])<br /></span><span style="color: #008080">17</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">-&gt;</span><span style="color: #000000">b[i]&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;node.b[i];<br /></span><span style="color: #008080">18</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">19</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /></span><span style="color: #008080">20</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">21</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /></span><span style="color: #008080">22</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Node()<br /></span><span style="color: #008080">23</span><span style="color: #000000"><img id="Codehighlighter1_396_433_Open_Image" onclick="this.style.display='none'; Codehighlighter1_396_433_Open_Text.style.display='none'; Codehighlighter1_396_433_Closed_Image.style.display='inline'; Codehighlighter1_396_433_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_396_433_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_396_433_Closed_Text.style.display='none'; Codehighlighter1_396_433_Open_Image.style.display='inline'; Codehighlighter1_396_433_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_396_433_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_396_433_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">24</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(b,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(b));<br /></span><span style="color: #008080">25</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br /></span><span style="color: #008080">26</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000">;<br /></span><span style="color: #008080">27</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Node</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;setV;<br /></span><span style="color: #008080">28</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;map</span><span style="color: #000000">&lt;</span><span style="color: #000000">Node,</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;mp;<br /></span><span style="color: #008080">29</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;_tmain(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;argv[])<br /></span><span style="color: #008080">30</span><span style="color: #000000"><img id="Codehighlighter1_512_1093_Open_Image" onclick="this.style.display='none'; Codehighlighter1_512_1093_Open_Text.style.display='none'; Codehighlighter1_512_1093_Closed_Image.style.display='inline'; Codehighlighter1_512_1093_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_512_1093_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_512_1093_Closed_Text.style.display='none'; Codehighlighter1_512_1093_Open_Image.style.display='inline'; Codehighlighter1_512_1093_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_512_1093_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_512_1093_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">31</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /></span><span style="color: #008080">32</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;a,b,c;<br /></span><span style="color: #008080">33</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;a.c[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">a</span><span style="color: #000000">'</span><span style="color: #000000">;<br /></span><span style="color: #008080">34</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;a.a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">a111</span><span style="color: #000000">"</span><span style="color: #000000">;<br /></span><span style="color: #008080">35</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;a.b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">1</span><span style="color: #000000">'</span><span style="color: #000000">;<br /></span><span style="color: #008080">36</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;b.c[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">b</span><span style="color: #000000">'</span><span style="color: #000000">;<br /></span><span style="color: #008080">37</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;b.a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">b222</span><span style="color: #000000">"</span><span style="color: #000000">;<br /></span><span style="color: #008080">38</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;b.b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">2</span><span style="color: #000000">'</span><span style="color: #000000">;<br /></span><span style="color: #008080">39</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;c.c[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">a</span><span style="color: #000000">'</span><span style="color: #000000">;<br /></span><span style="color: #008080">40</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;c.a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">a333</span><span style="color: #000000">"</span><span style="color: #000000">;<br /></span><span style="color: #008080">41</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;c.b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">3</span><span style="color: #000000">'</span><span style="color: #000000">;<br /></span><span style="color: #008080">42</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /></span><span style="color: #008080">43</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mp[a]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br /></span><span style="color: #008080">44</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mp[b]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">;<br /></span><span style="color: #008080">45</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mp[c]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">;<br /></span><span style="color: #008080">46</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">47</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;setV.insert(a);<br /></span><span style="color: #008080">48</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;setV.insert(b);<br /></span><span style="color: #008080">49</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;setV.insert(c);<br /></span><span style="color: #008080">50</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /></span><span style="color: #008080">51</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Node</span><span style="color: #000000">&gt;</span><span style="color: #000000">::iterator&nbsp;iter&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;setV.begin();iter</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;setV.end();</span><span style="color: #000000">++</span><span style="color: #000000">iter)<br /></span><span style="color: #008080">52</span><span style="color: #000000"><img id="Codehighlighter1_874_909_Open_Image" onclick="this.style.display='none'; Codehighlighter1_874_909_Open_Text.style.display='none'; Codehighlighter1_874_909_Closed_Image.style.display='inline'; Codehighlighter1_874_909_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_874_909_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_874_909_Closed_Text.style.display='none'; Codehighlighter1_874_909_Open_Image.style.display='inline'; Codehighlighter1_874_909_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_874_909_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_874_909_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">53</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">iter</span><span style="color: #000000">-&gt;</span><span style="color: #000000">b</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /></span><span style="color: #008080">54</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">55</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /></span><span style="color: #008080">56</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;for(map&lt;Node,int&gt;::iterator&nbsp;iter&nbsp;=&nbsp;mp.begin();iter!=&nbsp;mp.end();++iter)<br /></span><span style="color: #008080">57</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;{<br /></span><span style="color: #008080">58</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;iter-&gt;first.c&lt;&lt;"&nbsp;"&lt;&lt;iter-&gt;first.a&lt;&lt;"&nbsp;"&nbsp;&lt;&lt;iter-&gt;second&lt;&lt;endl;<br /></span><span style="color: #008080">59</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;}</span><span style="color: #008000"><br /></span><span style="color: #008080">60</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"><br /></span><span style="color: #008080">61</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">62</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div><br /><br /></div><img src ="http://www.cppblog.com/micwu/aggbug/159449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/micwu/" target="_blank">micwu</a> 2011-11-01 13:45 <a href="http://www.cppblog.com/micwu/archive/2011/11/01/159449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Static Library &amp;&amp; Dynamic Library</title><link>http://www.cppblog.com/micwu/archive/2011/09/05/155143.html</link><dc:creator>micwu</dc:creator><author>micwu</author><pubDate>Mon, 05 Sep 2011 10:08:00 GMT</pubDate><guid>http://www.cppblog.com/micwu/archive/2011/09/05/155143.html</guid><wfw:comment>http://www.cppblog.com/micwu/comments/155143.html</wfw:comment><comments>http://www.cppblog.com/micwu/archive/2011/09/05/155143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/micwu/comments/commentRss/155143.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/micwu/services/trackbacks/155143.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: The Static LibraryThe library is pretty standard, in that the function is declared in the header and defined within the 'c/cpp' file. The files are listed below:Add a new project: Win32 Console Ap...&nbsp;&nbsp;<a href='http://www.cppblog.com/micwu/archive/2011/09/05/155143.html'>阅读全文</a><img src ="http://www.cppblog.com/micwu/aggbug/155143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/micwu/" target="_blank">micwu</a> 2011-09-05 18:08 <a href="http://www.cppblog.com/micwu/archive/2011/09/05/155143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Constant Member Function</title><link>http://www.cppblog.com/micwu/archive/2011/07/12/150752.html</link><dc:creator>micwu</dc:creator><author>micwu</author><pubDate>Tue, 12 Jul 2011 05:41:00 GMT</pubDate><guid>http://www.cppblog.com/micwu/archive/2011/07/12/150752.html</guid><wfw:comment>http://www.cppblog.com/micwu/comments/150752.html</wfw:comment><comments>http://www.cppblog.com/micwu/archive/2011/07/12/150752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/micwu/comments/commentRss/150752.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/micwu/services/trackbacks/150752.html</trackback:ping><description><![CDATA[<font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"> 
<p><br /></p>
<p>Declaring a member function with the <strong style="color: red">const</strong><span style="color: red"> </span>keyword specifies that the function is a "read-only" function that does not modify the object for which it is called.</p>
<p><br />struct</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas"> SockAddrIn : </font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">public</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas"> SOCKADDR_IN {</p></font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">
<p>public</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">:<br />...</p></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">
<p></font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">bool</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas"> IsEqual(</font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">const</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas"> SockAddrIn&amp; sin) </font></font><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas"><font color="#0000ff" size="2" face="Consolas">const</font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">; <br />//A read-only function, IsEqual cannot modify any data members or call any member functions that aren't constant.<br /><font color="#0000ff" size="2"><font color="#0000ff" size="2">void</font></font><font size="2"> SetAddr(SOCKADDR_IN* psin) { memcpy(</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">this</font></font><font size="2">, psin, Size()); }<br />//A write function, cannot be const</p>
<p></font></font></font><font size="2" face="Consolas"><font size="2" face="Consolas">...<br />};</p></font></font><img src ="http://www.cppblog.com/micwu/aggbug/150752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/micwu/" target="_blank">micwu</a> 2011-07-12 13:41 <a href="http://www.cppblog.com/micwu/archive/2011/07/12/150752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>