﻿<?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++博客-勤能补拙，Expter-随笔分类-生活笔记</title><link>http://www.cppblog.com/expter/category/8547.html</link><description>成都游戏Coder，记录游戏开发过程的笔记和心得！</description><language>zh-cn</language><lastBuildDate>Sat, 09 Apr 2011 05:12:02 GMT</lastBuildDate><pubDate>Sat, 09 Apr 2011 05:12:02 GMT</pubDate><ttl>60</ttl><item><title>关于 warning C4715问题。</title><link>http://www.cppblog.com/expter/archive/2011/04/09/143795.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sat, 09 Apr 2011 04:52:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2011/04/09/143795.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/143795.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2011/04/09/143795.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/143795.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/143795.html</trackback:ping><description><![CDATA[<p>介绍:<br>&nbsp; <span class=question-title><br>&nbsp;&nbsp;&nbsp;关于warning C4715:not all control paths return a value</span>&nbsp;&nbsp;(不是所有的控件路径都返回值).<br><br>问题:<br>&nbsp;&nbsp;&nbsp; 一个函数，不是所有路径都有返回值，如下:<br><br>&nbsp;&nbsp;&nbsp; 1)&nbsp;基本数据类型<br>&nbsp;&nbsp;&nbsp; 对于函数的并不是每个分支都有返回值，那么这样警告会提示不是所有路径都有返回值。</p>
<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;test(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;value&nbsp;)<br><img id=Codehighlighter1_24_59_Open_Image onclick="this.style.display='none'; Codehighlighter1_24_59_Open_Text.style.display='none'; Codehighlighter1_24_59_Closed_Image.style.display='inline'; Codehighlighter1_24_59_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_24_59_Closed_Image onclick="this.style.display='none'; Codehighlighter1_24_59_Closed_Text.style.display='none'; Codehighlighter1_24_59_Open_Image.style.display='inline'; Codehighlighter1_24_59_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_24_59_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_24_59_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;value&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;value;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<p><br>&nbsp;&nbsp;&nbsp;调用 int value = test( -1 );<br><br>&nbsp;&nbsp;&nbsp;看下test的汇编代码.<br></p>
<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">关于8个程序寄存器一般只有esp寄存器作为入栈，出栈，调用和返回指令作为栈指针，其余<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">比如eax,exc等寄存器都没有固定的含义和固定值.<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">看下面test汇编代码.<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;test(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;value&nbsp;)<br><img id=Codehighlighter1_108_845_Open_Image onclick="this.style.display='none'; Codehighlighter1_108_845_Open_Text.style.display='none'; Codehighlighter1_108_845_Closed_Image.style.display='inline'; Codehighlighter1_108_845_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_108_845_Closed_Image onclick="this.style.display='none'; Codehighlighter1_108_845_Closed_Text.style.display='none'; Codehighlighter1_108_845_Open_Image.style.display='inline'; Codehighlighter1_108_845_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_108_845_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_108_845_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">;&nbsp;4个寄存器入栈<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">;&nbsp;ebp&nbsp;用于存放函数栈的栈顶指针<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">;&nbsp;esp&nbsp;用于存放函数栈的栈底指针<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113A0&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ebp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;将寄存器ebp的内容压入程序栈<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113A1&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ebp,esp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;保留esp寄存器<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113A3&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,0C0h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;为该函数留出临时存储区<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113A9&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ebx&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113AA&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esi&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113AB&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edi&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">;&nbsp;用0CCCCCCCCh初始化堆栈&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113AC&nbsp;&nbsp;lea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edi,[ebp</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">0C0h]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;lea直接寻址<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113B2&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx,30h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;利用编译器的offset立即寻址<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113B7&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,0CCCCCCCCh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;eax</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0CCCCCCCCh<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113BC&nbsp;&nbsp;rep&nbsp;stos&nbsp;&nbsp;&nbsp;&nbsp;dword&nbsp;ptr&nbsp;es:[edi]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;根据edi的大小来重复指令执行次数<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">;&nbsp;如果&nbsp;cmp为真则把value的值保存到eax寄存器中<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">;&nbsp;否则跳转到地址4113C7h,并没有对eax做处理<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;value&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;value;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113BE&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword&nbsp;ptr&nbsp;[value],</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113C2&nbsp;&nbsp;jle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">27h&nbsp;(4113C7h)&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">004113C4&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,dword&nbsp;ptr&nbsp;[value]&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">;各指针出栈，对应前面3条push<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113C7&nbsp;&nbsp;pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;弹出edi<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113C8&nbsp;&nbsp;pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;弹出esi<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113C9&nbsp;&nbsp;pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ebx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;弹出ebx<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113CA&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,ebp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;把esp重新指向ebp(函数栈的栈顶指<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">针，test函数栈顶)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113CC&nbsp;&nbsp;pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ebp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;ebp重新指向test调用函数返回地址<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113CD&nbsp;&nbsp;ret</span></div>
<p><br>调用汇编代码<br></p>
<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;value&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;test&nbsp;(&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113FE&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">00411400</span><span style="COLOR: #000000">&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;(4110AFh)&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">00411405</span><span style="COLOR: #000000">&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Call&nbsp;test&nbsp;函数时将压入栈数据，<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">由于只有一个参数，所以只有4字节<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">00411408</span><span style="COLOR: #000000">&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword&nbsp;ptr&nbsp;[value],eax&nbsp;</span></div>
<p>当test 调用小于0时最后value指向的eax是一个0CCCCCCCCh，而对于基本数据类型大多value得到的是0CCCCCCCCh值.<br>如果我们的test函数:</p>
<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;test(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;value&nbsp;)<br><img id=Codehighlighter1_24_77_Open_Image onclick="this.style.display='none'; Codehighlighter1_24_77_Open_Text.style.display='none'; Codehighlighter1_24_77_Closed_Image.style.display='inline'; Codehighlighter1_24_77_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_24_77_Closed_Image onclick="this.style.display='none'; Codehighlighter1_24_77_Closed_Text.style.display='none'; Codehighlighter1_24_77_Open_Image.style.display='inline'; Codehighlighter1_24_77_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_24_77_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_24_77_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;value&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;value;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<p>那么汇编代码会如下:</p>
<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;value&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;value;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113EE&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword&nbsp;ptr&nbsp;[value],</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113F2&nbsp;&nbsp;jle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">29h&nbsp;(4113F9h)&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113F4&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,dword&nbsp;ptr&nbsp;[value]&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113F7&nbsp;&nbsp;jmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">2Bh&nbsp;(4113FBh)&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">004113F9&nbsp;&nbsp;xor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,eax&nbsp;&nbsp;&nbsp;;将eax清零,作为返回值</span></div>
<p><br><br>&nbsp;&nbsp; 2 )如果返回的是一个引用对象<br>&nbsp;&nbsp;&nbsp;&nbsp;</p>
<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">obj&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;&nbsp;test(&nbsp;type&nbsp;value&nbsp;)<br><img id=Codehighlighter1_26_53_Open_Image onclick="this.style.display='none'; Codehighlighter1_26_53_Open_Text.style.display='none'; Codehighlighter1_26_53_Closed_Image.style.display='inline'; Codehighlighter1_26_53_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_26_53_Closed_Image onclick="this.style.display='none'; Codehighlighter1_26_53_Closed_Text.style.display='none'; Codehighlighter1_26_53_Open_Image.style.display='inline'; Codehighlighter1_26_53_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_26_53_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_26_53_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;type2&nbsp;)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;obj;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">obj&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;ob&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;test(&nbsp;type1&nbsp;);</span></div>
<br>
<p>&nbsp;&nbsp;&nbsp;如果ob是个空引用的话，就出出错，关于这种出错是否可以通过什么方式避免呢？<br><br>&nbsp;&nbsp; 我觉得warning C4715就应该是error C4715.让开发者从最开始就避免这种错误的发生。<br>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/expter/aggbug/143795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2011-04-09 12:52 <a href="http://www.cppblog.com/expter/archive/2011/04/09/143795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用Win32消息来解决MyGui中文完整输入</title><link>http://www.cppblog.com/expter/archive/2011/03/23/142577.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Wed, 23 Mar 2011 07:20:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2011/03/23/142577.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/142577.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2011/03/23/142577.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/142577.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/142577.html</trackback:ping><description><![CDATA[date:&nbsp; 3/23/2011<br><br>介绍:<br>&nbsp;&nbsp;&nbsp; 利用Win32 来处理MyGui 3.0.1的中文输入。<br><br>实现:<br>&nbsp;&nbsp;&nbsp; 配置还是参考网上的配置，主要再加中文字体.<br>&nbsp;&nbsp; 如下:<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">□&nbsp;更改配置文件MyGUI3.</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">\Media\MyGUI_Media下<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">☆&nbsp;core_font.xml添加<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Resource&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ResourceTrueTypeFont</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">font_Simhei</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Source</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">simhei.ttf</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Size</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">19</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Resolution</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Antialias</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">false</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SpaceWidth</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TabWidth</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">CursorWidth</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Distance</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">OffsetHeight</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Codes</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Code&nbsp;range</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">33&nbsp;126</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Code&nbsp;range</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">19969&nbsp;40869</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Code&nbsp;hide</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">128</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Code&nbsp;hide</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1026&nbsp;1039</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Code&nbsp;hide</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1104</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">Codes</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">Resource</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">☆&nbsp;simhei.ttf要从系统目录下的Fonts拷贝到当前目录。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">☆&nbsp;core_settings.xml中将默认字体改成<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">MyGUI&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Font</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Property&nbsp;key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Default</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">font_Simhei</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">MyGUI</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp; 运行Demo解决方案:&nbsp;&nbsp; solution_directx。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 给BaseManager添加Win32消息响应函数void ProcIO(UINT messgae, WPARAM wParam, LPARAM lParam ).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;WM_CHAR:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;WM_KEYDOWN:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;WM_KEYUP:<br><img id=Codehighlighter1_53_240_Open_Image onclick="this.style.display='none'; Codehighlighter1_53_240_Open_Text.style.display='none'; Codehighlighter1_53_240_Closed_Image.style.display='inline'; Codehighlighter1_53_240_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_53_240_Closed_Image onclick="this.style.display='none'; Codehighlighter1_53_240_Closed_Text.style.display='none'; Codehighlighter1_53_240_Open_Image.style.display='inline'; Codehighlighter1_53_240_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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_53_240_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_53_240_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000">::BaseManager&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">baseManager&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000">::BaseManager</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)GetWindowLongPtr(hWnd,&nbsp;GWL_USERDATA);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;baseManager&nbsp;)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;baseManager</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">ProcIO(&nbsp;uMsg&nbsp;,&nbsp;wParam&nbsp;,&nbsp;lParam&nbsp;);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br>&nbsp;&nbsp; ProcIO主要是对<br>&nbsp;&nbsp; WM_CHAR&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;字符响应<br>&nbsp;&nbsp; WM_KEYDOWN/WM_KEYUP&nbsp; 按键响应<br><br>&nbsp;&nbsp; 在处理字符响应的时候需要区分输入法状态和非输入法状态的字符响应。<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;WM_CHAR:<br><img id=Codehighlighter1_17_228_Open_Image onclick="this.style.display='none'; Codehighlighter1_17_228_Open_Text.style.display='none'; Codehighlighter1_17_228_Closed_Image.style.display='inline'; Codehighlighter1_17_228_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_17_228_Closed_Image onclick="this.style.display='none'; Codehighlighter1_17_228_Closed_Text.style.display='none'; Codehighlighter1_17_228_Open_Image.style.display='inline'; Codehighlighter1_17_228_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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_17_228_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_17_228_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;ImmIsIME(&nbsp;GetKeyboardLayout(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;))<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProcChar(&nbsp;wParam&nbsp;,&nbsp;lParam&nbsp;);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_109_222_Open_Image onclick="this.style.display='none'; Codehighlighter1_109_222_Open_Text.style.display='none'; Codehighlighter1_109_222_Closed_Image.style.display='inline'; Codehighlighter1_109_222_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_109_222_Closed_Image onclick="this.style.display='none'; Codehighlighter1_109_222_Closed_Text.style.display='none'; Codehighlighter1_109_222_Open_Image.style.display='inline'; Codehighlighter1_109_222_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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_109_222_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_109_222_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyGUI::InputManager::getInstance().injectKeyPress(MyGUI::KeyCode::Enum(scan_code),&nbsp;code_point);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;</span></div>
<br>ProcChar函数主要处理中文。因为汉字为8个字节会响应WM_CHAR2次。需要进行组合一次。<br>WM_KEYDOWN：主要处理一些Widget字符输入。同时还可以做全局键盘信息监控（快捷键）.<br><br>判断一个Widget是否可以进行字符输入:<br>\MyGUIEngine\include\MyGUI_InputManager.cpp<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputManager::isKeyInputCapture()<br><img id=Codehighlighter1_44_289_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_289_Open_Text.style.display='none'; Codehighlighter1_44_289_Closed_Image.style.display='inline'; Codehighlighter1_44_289_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_44_289_Closed_Image onclick="this.style.display='none'; Codehighlighter1_44_289_Closed_Text.style.display='none'; Codehighlighter1_44_289_Open_Image.style.display='inline'; Codehighlighter1_44_289_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.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_44_289_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_44_289_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">mWidgetKeyFocus&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;&nbsp;strName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;mWidgetKeyFocus</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getTypeName();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;strName&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ComboBox</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strName&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Edit</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strName&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Message</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strName&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">List</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_250_270_Open_Image onclick="this.style.display='none'; Codehighlighter1_250_270_Open_Text.style.display='none'; Codehighlighter1_250_270_Closed_Image.style.display='inline'; Codehighlighter1_250_270_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_250_270_Closed_Image onclick="this.style.display='none'; Codehighlighter1_250_270_Closed_Text.style.display='none'; Codehighlighter1_250_270_Open_Image.style.display='inline'; Codehighlighter1_250_270_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_250_270_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_250_270_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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">true</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br>由于采用Win32键盘消息，应该屏蔽自带OIS的。<br>Input\OIS\InputManager.cpp<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;InputManager::captureInput()<br><img id=Codehighlighter1_35_97_Open_Image onclick="this.style.display='none'; Codehighlighter1_35_97_Open_Text.style.display='none'; Codehighlighter1_35_97_Closed_Image.style.display='inline'; Codehighlighter1_35_97_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_35_97_Closed_Image onclick="this.style.display='none'; Codehighlighter1_35_97_Closed_Text.style.display='none'; Codehighlighter1_35_97_Open_Image.style.display='inline'; Codehighlighter1_35_97_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">&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_35_97_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_35_97_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(mMouse)&nbsp;mMouse</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">capture();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">mKeyboard-&gt;capture();</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #000000">&nbsp;}</span></span></div>
<br>在Demo中监控按键消息( DemoKeeper功能是UIManager )。<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"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;DemoKeeper::injectKeyPress(MyGUI::KeyCode&nbsp;_key,&nbsp;MyGUI::Char&nbsp;_text)<br><img id=Codehighlighter1_73_616_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_616_Open_Text.style.display='none'; Codehighlighter1_73_616_Closed_Image.style.display='inline'; Codehighlighter1_73_616_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_73_616_Closed_Image onclick="this.style.display='none'; Codehighlighter1_73_616_Closed_Text.style.display='none'; Codehighlighter1_73_616_Open_Image.style.display='inline'; Codehighlighter1_73_616_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.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_73_616_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_73_616_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(_key&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;MyGUI::KeyCode::Grave)<br><img id=Codehighlighter1_114_178_Open_Image onclick="this.style.display='none'; Codehighlighter1_114_178_Open_Text.style.display='none'; Codehighlighter1_114_178_Closed_Image.style.display='inline'; Codehighlighter1_114_178_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_114_178_Closed_Image onclick="this.style.display='none'; Codehighlighter1_114_178_Closed_Text.style.display='none'; Codehighlighter1_114_178_Open_Image.style.display='inline'; Codehighlighter1_114_178_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_114_178_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_114_178_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mConsole</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setVisible(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">mConsole</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">isVisible());<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(_key&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;MyGUI::KeyCode::F2&nbsp;)<br><img id=Codehighlighter1_224_371_Open_Image onclick="this.style.display='none'; Codehighlighter1_224_371_Open_Text.style.display='none'; Codehighlighter1_224_371_Closed_Image.style.display='inline'; Codehighlighter1_224_371_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_224_371_Closed_Image onclick="this.style.display='none'; Codehighlighter1_224_371_Closed_Text.style.display='none'; Codehighlighter1_224_371_Open_Image.style.display='inline'; Codehighlighter1_224_371_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_224_371_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_224_371_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyGUI::Message::createMessageBox(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Message</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Press&nbsp;F2&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;MyGUI::MessageBoxStyle::Ok&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">&nbsp;MyGUI::MessageBoxStyle::IconInfo);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(_key&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;MyGUI::KeyCode::F3&nbsp;)<br><img id=Codehighlighter1_415_562_Open_Image onclick="this.style.display='none'; Codehighlighter1_415_562_Open_Text.style.display='none'; Codehighlighter1_415_562_Closed_Image.style.display='inline'; Codehighlighter1_415_562_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_415_562_Closed_Image onclick="this.style.display='none'; Codehighlighter1_415_562_Closed_Text.style.display='none'; Codehighlighter1_415_562_Open_Image.style.display='inline'; Codehighlighter1_415_562_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_415_562_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_415_562_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyGUI::Message::createMessageBox(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Message</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Info</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Press&nbsp;F3&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;MyGUI::MessageBoxStyle::Ok&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">&nbsp;MyGUI::MessageBoxStyle::IconInfo);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000">::BaseManager::injectKeyPress(_key,&nbsp;_text);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br><br>最后附上源码解决方案:<br><a href="http://www.cppblog.com/Files/expter/MyGuiDemo.rar">/Files/expter/MyGuiDemo.rar<br></a><br>图片：<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/expter/mygui.jpg" width=417 height=317><br>
<img src ="http://www.cppblog.com/expter/aggbug/142577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2011-03-23 15:20 <a href="http://www.cppblog.com/expter/archive/2011/03/23/142577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>根据子类类型访问其特有操作 </title><link>http://www.cppblog.com/expter/archive/2011/02/24/140616.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Thu, 24 Feb 2011 15:23:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2011/02/24/140616.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/140616.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2011/02/24/140616.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/140616.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/140616.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 描述:&nbsp;&nbsp;&nbsp;一个常见遇到的解决方案，下面记录下来。&nbsp;&nbsp; 1个功能模块，有一个简单的继承体系，基类假设为Base.&nbsp;&nbsp; 然后通过一个接口，如何访问子类的特有操作？&nbsp;&nbsp;&nbsp;&nbsp; /// 外部提供一个下面接口:&nbsp;&nbsp; virutal&nbsp;&nbsp; Base*&nbsp; ...&nbsp;&nbsp;<a href='http://www.cppblog.com/expter/archive/2011/02/24/140616.html'>阅读全文</a><img src ="http://www.cppblog.com/expter/aggbug/140616.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2011-02-24 23:23 <a href="http://www.cppblog.com/expter/archive/2011/02/24/140616.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>针对一个内存池测试相关介绍</title><link>http://www.cppblog.com/expter/archive/2011/01/18/138787.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Tue, 18 Jan 2011 13:20:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2011/01/18/138787.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/138787.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2011/01/18/138787.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/138787.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/138787.html</trackback:ping><description><![CDATA[<p>目的:<br>针对自己的一个内存池如何测试其性能.<br><br>介绍：<br>1.内存池测试用例的选取.<br>1.单线程的分配和释放.<br>2.内存回收.<br>3.性能关注.</p>
<p>关于内存池的设计和实现网上遍地都是，本文不具体介绍关于内存池的具体实现和方式，主要是介绍设计一个内存池怎样去测试其性能和安全处理，有一个开源的内存池项目tcmalloc也有介绍很多，但是为了满足多种需求，代码过于庞大，最后我用来测试分配性能测试。</p>
<p>1个内存池的测试用例应该包含：<br>1）该项目内存分配概率随机性.<br>2）同时保证释放的随机性.<br>3）可以支持多种分配方式（不同大小，不同对象参数等）.</p>
<p><br>要达到上面要求则可以设计<br>1.一个数组来设定需要分配的大小。<br>&nbsp;&nbsp;&nbsp;long&nbsp; arr[ ] = { 16,32,64,128,256,512,1024,2048,5120,5130,7000,6000,10240,15000,20000};<br><br>2.根据需求来指定各个大小的分配几率，这好比有多少概率选中某个数（需特定的分配）:<br>&nbsp;&nbsp;&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;A.针对这个需求可以设定定一个概率数组Odds,数组值arrArr的索引。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;B.针对Odds指定数组数据，使其数据分配达到arr需要分配概率。<br><img id=Codehighlighter1_84_96_Open_Image onclick="this.style.display='none'; Codehighlighter1_84_96_Open_Text.style.display='none'; Codehighlighter1_84_96_Closed_Image.style.display='inline'; Codehighlighter1_84_96_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_84_96_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_84_96_Closed_Text.style.display='none'; Codehighlighter1_84_96_Open_Image.style.display='inline'; Codehighlighter1_84_96_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_84_96_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_84_96_Open_Text><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;被分配的概率</span><span style="COLOR: #808080"></span></span><br><img id=Codehighlighter1_120_197_Open_Image onclick="this.style.display='none'; Codehighlighter1_120_197_Open_Text.style.display='none'; Codehighlighter1_120_197_Closed_Image.style.display='inline'; Codehighlighter1_120_197_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_120_197_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_120_197_Closed_Text.style.display='none'; Codehighlighter1_120_197_Open_Image.style.display='inline'; Codehighlighter1_120_197_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;&nbsp;Odds[&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_120_197_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_120_197_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">,,</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;C.随机Odds数组，然后得到其值分配，其值则为Arr的索引。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;&nbsp;Asize</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;arr[&nbsp;Odds[&nbsp;rand()</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">size&nbsp;]&nbsp;]&nbsp;;</span></div>
<p><br><br>3.释放保证随机性。<br>&nbsp;&nbsp;&nbsp;&nbsp; 什么时候释放，以及分配了做什么用，都是又应用层决定的，所以需要把分配出来的内存通过一个容器来存储.<br>&nbsp;&nbsp;&nbsp;&nbsp; 由于分配是随机性，那么释放的时候也保证了随机性。<br><br>4.支持多种分配方式。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A. 对象分配:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">MemFactory&nbsp;&nbsp;Memory;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;A</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Memory.Alloc</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">(&nbsp;);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;B</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;b&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Memory.Alloc</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">B,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Memory.FreeObj(&nbsp;a&nbsp;);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Memory.FreeObj(&nbsp;b&nbsp;);</span></div>
<p>&nbsp;&nbsp;&nbsp; B.直接分配</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;p1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Memory.Alloc(&nbsp;Asize&nbsp;);</span></div>
<p><br>5.性能测试<br>&nbsp;&nbsp; 为了测试性能，我选择了分配1000W次，其中用一个容器保存分配的数据，然后当容器到达100W的时候释放60W数据(保证数据正在使用，随机释放)。<br>&nbsp;&nbsp; 下面的Alloc time 只是统计的Alloc时间累加，Free time只是统计的Free 时间累加，Total time记录这次测试总共花费时间。</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">测试结果如下:<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>MemPool&nbsp;Alloc&nbsp;time&nbsp;</span><span style="COLOR: #000000">3242</span><span style="COLOR: #000000">&nbsp;ms&nbsp;&nbsp;Free&nbsp;time:&nbsp;</span><span style="COLOR: #000000">2412</span><span style="COLOR: #000000">&nbsp;ms&nbsp;Total&nbsp;time&nbsp;</span><span style="COLOR: #000000">22535</span><span style="COLOR: #000000">&nbsp;ms<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>System&nbsp;&nbsp;&nbsp;&nbsp;Alloc&nbsp;time&nbsp;</span><span style="COLOR: #000000">33616</span><span style="COLOR: #000000">&nbsp;ms&nbsp;Free&nbsp;time:&nbsp;</span><span style="COLOR: #000000">6676</span><span style="COLOR: #000000">&nbsp;ms&nbsp;Total&nbsp;time&nbsp;</span><span style="COLOR: #000000">55013</span><span style="COLOR: #000000">&nbsp;ms<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>TCMalloc&nbsp;Alloc&nbsp;time&nbsp;</span><span style="COLOR: #000000">3451</span><span style="COLOR: #000000">&nbsp;ms&nbsp;&nbsp;&nbsp;Free&nbsp;time&nbsp;</span><span style="COLOR: #000000">1896</span><span style="COLOR: #000000">&nbsp;ms&nbsp;&nbsp;Toal&nbsp;&nbsp;time&nbsp;</span><span style="COLOR: #000000">21078</span><span style="COLOR: #000000">&nbsp;ms<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>可以看到TCMalloc的分配和释放都比较快。。<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>其中arr每个分配的大小命中概率。<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2436395</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1281728</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1026009</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">769123</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">768911</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">769335</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">640757</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">640974</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">512378</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">384841</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">256135</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">257367</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Count[&nbsp;</span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">&nbsp;]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">256047</span></div>
<p><br><br>PS：<br>1.内存池的使用：<br>&nbsp;&nbsp; </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;一般情况下内存池，是整理一整块内存，然后通过一个list串连起来，然后分配的时候从链表中获取，释放也是插入到链表中。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;为了方便多对象的多参数以及无参数的分配，可以一些列宏和模板来实现:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;具体的可以参考后面附带的内存池实现的代码:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;DEFINE_CALL_CON(&nbsp;paramcount&nbsp;)&nbsp;template&nbsp;&lt;class&nbsp;T,&nbsp;DP_STMP_##paramcount(&nbsp;typename,&nbsp;tp&nbsp;)&nbsp;&gt;\</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_287_455_Open_Image onclick="this.style.display='none'; Codehighlighter1_287_455_Open_Text.style.display='none'; Codehighlighter1_287_455_Closed_Image.style.display='inline'; Codehighlighter1_287_455_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_287_455_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_287_455_Closed_Text.style.display='none'; Codehighlighter1_287_455_Open_Image.style.display='inline'; Codehighlighter1_287_455_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;inline&nbsp;T&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;Alloc(DP_MTMP_##paramcount(&nbsp;tp,&nbsp;p&nbsp;)&nbsp;)</span><span id=Codehighlighter1_287_455_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_287_455_Open_Text><span style="COLOR: #000000">{\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;lSize&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(T);\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;ptMem&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Alloc(lSize);\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">ptMem)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;NULL;&nbsp;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pt&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">(ptMem)T(&nbsp;LP_SNMP_##paramcount(&nbsp;p&nbsp;)&nbsp;);\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pt;\<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;A.&nbsp;对象分配:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;MemFactory&nbsp;&nbsp;Memory;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;A</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Memory.Alloc</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">(&nbsp;);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;B</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;b&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Memory.Alloc</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">B,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;); <br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp; C* c = Memory.Alloc&lt;C,int,const char*&gt;(1,"dd");<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Memory.FreeObj(&nbsp;a&nbsp;);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Memory.FreeObj(&nbsp;b&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Memory.FreeObj(&nbsp;c&nbsp;);<br><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;B.直接分配<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;p1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Memory.Alloc(&nbsp;Asize&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(p1,0,ASize);<br></span></div>
<p><br>2.内存池的代码：<br>&nbsp;&nbsp; 1)&nbsp;&nbsp; 实现全是利用的freelist,减少内存开销，分配速度，直接定位。<br>&nbsp;&nbsp; 2)&nbsp;&nbsp; 管理都是通过工厂类来同一的管理。<br>&nbsp;&nbsp; 3)&nbsp;&nbsp; 指定分配策略.<br><br>&nbsp;&nbsp; 源码为Vs2008版本...<br><br>&nbsp;&nbsp; <a href="http://www.cppblog.com/Files/expter/Pool.rar">/Files/expter/Pool.rar</a><br><br>关于实现有疑问和建议，可以提出宝贵的意见。。</p>
<img src ="http://www.cppblog.com/expter/aggbug/138787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2011-01-18 21:20 <a href="http://www.cppblog.com/expter/archive/2011/01/18/138787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>定制自己的new 和 delete，让对象在静态块上进行分配。</title><link>http://www.cppblog.com/expter/archive/2009/08/16/93511.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sun, 16 Aug 2009 11:47:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/08/16/93511.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/93511.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/08/16/93511.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/93511.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/93511.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:       定制自己的new 和 delete，让对象在静态块上进行分配。<br>      一般常见的new和delete操作符，就意味着使用堆进行内存分配，使用new操作符是名为operator new的函数调用，且函数返回返回一个指向某块内存分配器分配内存指针。<br>      对于内存的分配到底从哪儿来没有任何限制，它可能来自一个特殊的堆，也可能来自一个静态分配的块，也可能来自一个标准容器内部，也可能来自某个函数范围的局部存储区。而对于现在的各自软件中主流内存管理方式，一般通过内存池的管理方式，它可能即包含静态分配也同时包含动态分配。&nbsp;&nbsp;<a href='http://www.cppblog.com/expter/archive/2009/08/16/93511.html'>阅读全文</a><img src ="http://www.cppblog.com/expter/aggbug/93511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-08-16 19:47 <a href="http://www.cppblog.com/expter/archive/2009/08/16/93511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毕业了，又是离别的6月。</title><link>http://www.cppblog.com/expter/archive/2009/06/17/87903.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Wed, 17 Jun 2009 13:16:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/06/17/87903.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/87903.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/06/17/87903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/87903.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/87903.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近学校的事情挺多，同时也换了新的住处。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上周毕业答辩顺利结束，宣告我的大学生活即将结束。四年，弹指一挥，四年，磨一剑，记得刚进大学的时候有过不少憧憬，对一切都充满着幻想，可是四年后的今天，很多憧憬都被现实粉碎，把我的性格磨平了，把我磨得稍微平静了，但是变得更加的倔强，变得比较宅男，有些东西拿得起，放却不下。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6月是一个离别的季节，在这离别之际，不得不给自己的同窗好友说再见，祝福每一个人都有美好的明天，这里充满着我们大学的回忆，有欢笑，有泪水，有无助等等，所有的这一切我都会喜欢，同时也因为女友，我也喜欢怀旧，喜欢把以前的东西翻出来看看，品味得与失。离别是为了下一次重逢，我们会再次相遇。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我不后悔我大学生活，这里我认识了不少朋友和老师，学到的不仅是知识，而更多的是做人，更是思想上进步，这才是想要的。我不浪漫，也不浪漫，我更喜欢独自一个人在哪儿凝思，一个人在哪儿玩游戏，品味这一切自己可能才可能感觉的快乐。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 我说话一般不经过大脑，平时可能有些语言过于刺激，但是跟多的是成为笑话，夜深人静的时候我喜欢在哪儿听最近一直听的哪首歌，对着电脑发呆不知道做什么。想着那里来，就那里去吧，去我该去的地方，去我该寻觅的角落，去我小小的世界，去我追寻的港湾，去我&#8230;&#8230;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; 我口才不怎么好，交流上也不是很主动，但是信念一直支撑着我，坚持，努力，为了那当初的承诺和梦想。<span><br><br>&nbsp;&nbsp;&nbsp; 在工作上我真的学到不少，最近也没在坚持每天都在哪儿敲键盘，忙毕业答辩的事情，可惜我制作的PPT，对于我长篇大论的说算法，老师却没多大兴趣。在公司学会了代码重用性，可扩展性的重要行。在后期维护以及代码重用都是很重要，一个好的设计模式可能直接影响整个系统的性能或者稳定性。最近也比较闲，没事看到内存池，脚本系统的设计。自己的兴趣一直在网络，虽然学得较浅，但是还是坚持学习，感谢公司的fox,<a id=SingleColumn1_Categories_CatList_ctl04_LinkList_ctl02_Link href="http://www.cppblog.com/kevinlynx/"><font color=#000000>kevinlynx</font></a>,pozen,还有女友一切帮助。中午休息时玩war对战，一直被fox虐，一是打得撇，二是很久不打，对其没多大兴趣。<br><br><br>&nbsp;&nbsp;&nbsp; 努力吧，为了自己，也为了关心自己的所有人。<br></span>
<img src ="http://www.cppblog.com/expter/aggbug/87903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-06-17 21:16 <a href="http://www.cppblog.com/expter/archive/2009/06/17/87903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>稳住心态，继续前进。。</title><link>http://www.cppblog.com/expter/archive/2009/04/26/81106.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sun, 26 Apr 2009 03:05:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/04/26/81106.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/81106.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/04/26/81106.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/81106.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/81106.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 稳住心态，继续前进。。&nbsp;&nbsp;<a href='http://www.cppblog.com/expter/archive/2009/04/26/81106.html'>阅读全文</a><img src ="http://www.cppblog.com/expter/aggbug/81106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-04-26 11:05 <a href="http://www.cppblog.com/expter/archive/2009/04/26/81106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一周回忆(2009.03.30-)</title><link>http://www.cppblog.com/expter/archive/2009/04/06/79133.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Mon, 06 Apr 2009 15:55:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/04/06/79133.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/79133.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/04/06/79133.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/79133.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/79133.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 本周公司游戏公测，然后也玩了此玩游戏，同时也比较关心游戏的运营状态，毕竟是公司第一款游戏。<br>&nbsp;&nbsp;&nbsp; 虽然没有参与此游戏的开发，但是看了server部分的代码，可以通过此次运营游戏的问题，来提醒自己以后尽量不要出现此问题，或者是提供一个更好的解决方案。<br><br><br>&nbsp;&nbsp;&nbsp; 本周在公司没做多大的事情，游戏公测，我也跑去玩游戏去了，虽然没有太大的网游天赋，但是还是尽量通过看的资料与代码在结合游戏来熟悉各个环节，为自己以后开发做好一定的基础。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本周清明节，放假3天，放假第一天先是回校和朋友们耍了，然后一起去图书馆还书，在借书，然后收到<a href="http://www.cppblog.com/expter/admin/www.3g.cn">3G门户</a>人事的一些信息。放假第二天电脑出问题了，我写的代码用VS2005,VC6 一link就会死机，只有拔电源。我也不知道什么BUG。郁闷惨了，重装系统问题依旧。陷于崩溃，最后打了几盘Z3，缓解了下心情，然后只有用DEV了。晚上换了以前的Solaris，安装了Ubuntu8.10，当然是虚拟机。放假第三天，和朋友逛了家乐福，下午睡觉，看了下毕业设计，有一些头绪了。&nbsp; 然后晚上看了会书。三天放假就这样过去了，感觉就像一宅男，下午和妈妈聊天，他喊我出去处处逛逛，我说一个人没撒好逛的，已在叮嘱我多吃，吃多点，感觉在父母眼中还是个小孩。。&nbsp; 这周看了2部电影，很好看，很好看，一部励志电影《当幸福来敲门》 一部很感人的爱情片《八月迷情》。<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp; 同时最近看了些书与代码，感觉收获蛮大，风格和注意问题都有提高。希望能再接再厉，保持状态，努力学习！<br><br><br><br>&nbsp;&nbsp;&nbsp; </p>
<img src ="http://www.cppblog.com/expter/aggbug/79133.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-04-06 23:55 <a href="http://www.cppblog.com/expter/archive/2009/04/06/79133.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一周总结，读书笔记</title><link>http://www.cppblog.com/expter/archive/2009/03/29/78313.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sun, 29 Mar 2009 14:28:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/03/29/78313.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/78313.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/03/29/78313.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/78313.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/78313.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这周主要是熟悉开发流程，阅读工程代码，熟悉方案逻辑，查看需求文档，然后就是看书学习，闲来无事可以听下歌，中午休息的时候去zoj做了几道题目。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看了接近一周的代码和书籍有了一下总结：<br>1.如果不需要一个类的对象不能被隐式的转换，可以在构造函数前增加关键字explicit&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;T</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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Array<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img id=Codehighlighter1_30_106_Open_Image onclick="this.style.display='none'; Codehighlighter1_30_106_Open_Text.style.display='none'; Codehighlighter1_30_106_Closed_Image.style.display='inline'; Codehighlighter1_30_106_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_30_106_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_30_106_Closed_Text.style.display='none'; Codehighlighter1_30_106_Open_Image.style.display='inline'; Codehighlighter1_30_106_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_30_106_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_30_106_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">explicit</span><span style="COLOR: #000000">&nbsp;Array(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;_size&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;[](</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;index);<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Array</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;a(</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Array</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;b(</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(a&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;b[i])<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img id=Codehighlighter1_162_197_Open_Image onclick="this.style.display='none'; Codehighlighter1_162_197_Open_Text.style.display='none'; Codehighlighter1_162_197_Closed_Image.style.display='inline'; Codehighlighter1_162_197_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_162_197_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_162_197_Closed_Text.style.display='none'; Codehighlighter1_162_197_Open_Image.style.display='inline'; Codehighlighter1_162_197_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_162_197_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_162_197_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;如果没有加explicit，可以编译通过，加了就不能通过</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;要转换可以使用</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(a&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;static_cast</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;b[i])<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img id=Codehighlighter1_242_248_Open_Image onclick="this.style.display='none'; Codehighlighter1_242_248_Open_Text.style.display='none'; Codehighlighter1_242_248_Closed_Image.style.display='inline'; Codehighlighter1_242_248_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_242_248_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_242_248_Closed_Text.style.display='none'; Codehighlighter1_242_248_Open_Image.style.display='inline'; Codehighlighter1_242_248_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_242_248_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_242_248_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;..<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>2.可以通过宏或者const常量,来优化，减少和优化常量，还可以利用宏来定义一些函数，或者字符串的处理。<br>&nbsp;&nbsp; 比如一个简单的字符串处理<br>&nbsp;&nbsp;
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;&nbsp;STR(ST)&nbsp;#ST</span></div>
<br>3.容器的使用，注意各种函数的参数和返回值以及各种函数使用。<br>&nbsp;&nbsp; 比如：关联容器和标准容器在删除元素的时候会不同。<br>&nbsp;&nbsp;&nbsp;&nbsp; 例子：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">对于ma等关联容器的元素删除<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>map</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,</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">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(map</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::iterator&nbsp;it&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;mp.begin();&nbsp;it&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;mp.end();)<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img id=Codehighlighter1_94_180_Open_Image onclick="this.style.display='none'; Codehighlighter1_94_180_Open_Text.style.display='none'; Codehighlighter1_94_180_Closed_Image.style.display='inline'; Codehighlighter1_94_180_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_94_180_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_94_180_Closed_Text.style.display='none'; Codehighlighter1_94_180_Open_Image.style.display='inline'; Codehighlighter1_94_180_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_94_180_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_94_180_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(<img src="http://www.cppblog.com/Images/dot.gif">)&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">满足删除条件</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #008000"><img id=Codehighlighter1_117_158_Open_Image onclick="this.style.display='none'; Codehighlighter1_117_158_Open_Text.style.display='none'; Codehighlighter1_117_158_Closed_Image.style.display='inline'; Codehighlighter1_117_158_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_117_158_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_117_158_Closed_Text.style.display='none'; Codehighlighter1_117_158_Open_Image.style.display='inline'; Codehighlighter1_117_158_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_117_158_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_117_158_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mp.erase(it</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">删除当前节点，并返回下一个元素，自加</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id=Codehighlighter1_167_178_Open_Image onclick="this.style.display='none'; Codehighlighter1_167_178_Open_Text.style.display='none'; Codehighlighter1_167_178_Closed_Image.style.display='inline'; Codehighlighter1_167_178_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_167_178_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_167_178_Closed_Text.style.display='none'; Codehighlighter1_167_178_Open_Image.style.display='inline'; Codehighlighter1_167_178_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_167_178_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_167_178_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>对于vector等标准容器的元素删除<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;ve;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::iterator&nbsp;it&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ve.begin();&nbsp;it&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;ve.end();)<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img id=Codehighlighter1_278_347_Open_Image onclick="this.style.display='none'; Codehighlighter1_278_347_Open_Text.style.display='none'; Codehighlighter1_278_347_Closed_Image.style.display='inline'; Codehighlighter1_278_347_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_278_347_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_278_347_Closed_Text.style.display='none'; Codehighlighter1_278_347_Open_Image.style.display='inline'; Codehighlighter1_278_347_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_278_347_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_278_347_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(<img src="http://www.cppblog.com/Images/dot.gif">)&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">满足删除条件</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #008000"><img id=Codehighlighter1_301_325_Open_Image onclick="this.style.display='none'; Codehighlighter1_301_325_Open_Text.style.display='none'; Codehighlighter1_301_325_Closed_Image.style.display='inline'; Codehighlighter1_301_325_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_301_325_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_301_325_Closed_Text.style.display='none'; Codehighlighter1_301_325_Open_Image.style.display='inline'; Codehighlighter1_301_325_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_301_325_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_301_325_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ve.erase(it);<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img id=Codehighlighter1_334_345_Open_Image onclick="this.style.display='none'; Codehighlighter1_334_345_Open_Text.style.display='none'; Codehighlighter1_334_345_Closed_Image.style.display='inline'; Codehighlighter1_334_345_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_334_345_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_334_345_Closed_Text.style.display='none'; Codehighlighter1_334_345_Open_Image.style.display='inline'; Codehighlighter1_334_345_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_334_345_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_334_345_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>关于2者区别主要是erase返回值问题，可以在网上查相关的说明，</span></div>
<br>4.关于内存池，基于动态分配的安全的线程池，可以利用2个参数，一个数据类型，一个锁类的参数模板。<br>&nbsp;&nbsp; 关于内存池可以阅读<a name=N102C3><span class=atitle>boost::pool&nbsp;</span></a>库相关文档，Boost <code>pool</code> 库引入了可用于实现快速内存分配的工具。正确的内存块对齐可以得到保证。
<p>&nbsp;&nbsp; 根据 Boost 文档所述，当您分配和释放许多小型对象时，建议使用池。使用池的另一个不太明显的优点在于，作为程序员，您不必担心内存泄露：内存由 Boost 库在内部自动进行管理。要使用 <code>pool</code> 库，您不必在链接时提供特定的库——单凭头文件就足以完成链接了。 有多个接口对 <code>pool</code> 库可用： <br>&nbsp;&nbsp; 关于Boost <code>pool可以阅读<br>&nbsp; <a href="http://www.ibm.com/developerworks/cn/aix/library/au-util_boost_lib/">http://www.ibm.com/developerworks/cn/aix/library/au-util_boost_lib/</a></code></p>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;另外实现一个锁类有很大的用处，比如<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">typename&nbsp;TyVal</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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Lock<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img id=Codehighlighter1_36_248_Open_Image onclick="this.style.display='none'; Codehighlighter1_36_248_Open_Text.style.display='none'; Codehighlighter1_36_248_Closed_Image.style.display='inline'; Codehighlighter1_36_248_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_36_248_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_36_248_Closed_Text.style.display='none'; Codehighlighter1_36_248_Open_Image.style.display='inline'; Codehighlighter1_36_248_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_36_248_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_36_248_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">explicit</span><span style="COLOR: #000000">&nbsp;Lock()<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img id=Codehighlighter1_64_65_Open_Image onclick="this.style.display='none'; Codehighlighter1_64_65_Open_Text.style.display='none'; Codehighlighter1_64_65_Closed_Image.style.display='inline'; Codehighlighter1_64_65_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_64_65_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_64_65_Closed_Text.style.display='none'; Codehighlighter1_64_65_Open_Image.style.display='inline'; Codehighlighter1_64_65_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_64_65_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_64_65_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">explicit</span><span style="COLOR: #000000">&nbsp;Lock(TyVal&nbsp;val):_val(val)<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img id=Codehighlighter1_104_114_Open_Image onclick="this.style.display='none'; Codehighlighter1_104_114_Open_Text.style.display='none'; Codehighlighter1_104_114_Closed_Image.style.display='inline'; Codehighlighter1_104_114_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_104_114_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_104_114_Closed_Text.style.display='none'; Codehighlighter1_104_114_Open_Image.style.display='inline'; Codehighlighter1_104_114_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_104_114_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_104_114_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">加锁</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img id=Codehighlighter1_124_153_Open_Image onclick="this.style.display='none'; Codehighlighter1_124_153_Open_Text.style.display='none'; Codehighlighter1_124_153_Closed_Image.style.display='inline'; Codehighlighter1_124_153_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_124_153_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_124_153_Closed_Text.style.display='none'; Codehighlighter1_124_153_Open_Image.style.display='inline'; Codehighlighter1_124_153_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">Lock()</span><span id=Codehighlighter1_124_153_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_124_153_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">释放}</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;TyVal&nbsp;_val;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>如果我们有一段代码需要加锁，则可以直接使用<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Vint;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>Lock</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">lock</span><span style="COLOR: #000000">(Vint);<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>可以直到lock的声明周期结束，释放资源</span></div>
</span><br>5.关于重载操作符，本周看到同事们在讨论一个关于结构体的代码<br>&nbsp; 实例如下:<br>&nbsp;&nbsp;
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Test<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_12_157_Open_Image onclick="this.style.display='none'; Codehighlighter1_12_157_Open_Text.style.display='none'; Codehighlighter1_12_157_Closed_Image.style.display='inline'; Codehighlighter1_12_157_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_12_157_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_12_157_Closed_Text.style.display='none'; Codehighlighter1_12_157_Open_Image.style.display='inline'; Codehighlighter1_12_157_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_12_157_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_12_157_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/dot.gif"></span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Test&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;Test&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">_t)<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img id=Codehighlighter1_63_143_Open_Image onclick="this.style.display='none'; Codehighlighter1_63_143_Open_Text.style.display='none'; Codehighlighter1_63_143_Closed_Image.style.display='inline'; Codehighlighter1_63_143_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_63_143_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_63_143_Closed_Text.style.display='none'; Codehighlighter1_63_143_Open_Image.style.display='inline'; Codehighlighter1_63_143_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_63_143_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_63_143_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">关于此处是否需要增加一个&nbsp;_t与*this的判断,</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memcpy(this,&amp;t,sizeof(t));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/dot.gif"></span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;</span></div>
&nbsp;&nbsp;&nbsp; 因为效率和安全的问题，是否需要增加判断的代码，比如<br>&nbsp;&nbsp;&nbsp;&nbsp; if(_t == *this)<br>&nbsp; &nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return *this;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; 其实Effective C++的条款17: （在operator=中检查给自己赋值）的情况已经说了需要增加一个自检验证，我们姑且不考虑memcpy的数据重叠问题(new placement)，增加一个明显有好处。<br><br>6. 必须有良好的OOA,OOD思想，这样能更快写出，高效的代码。<br>7. 算法重要，有良好的编程风格，在确保程序稳定的同时，增加效率。<br>&nbsp; <br><br>个人总结不代表其他意见。。 
<img src ="http://www.cppblog.com/expter/aggbug/78313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-03-29 22:28 <a href="http://www.cppblog.com/expter/archive/2009/03/29/78313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2007年我在干啥</title><link>http://www.cppblog.com/expter/archive/2009/03/29/78258.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sun, 29 Mar 2009 06:50:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/03/29/78258.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/78258.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/03/29/78258.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/78258.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/78258.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2007年我在干啥&nbsp;&nbsp;<a href='http://www.cppblog.com/expter/archive/2009/03/29/78258.html'>阅读全文</a><img src ="http://www.cppblog.com/expter/aggbug/78258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-03-29 14:50 <a href="http://www.cppblog.com/expter/archive/2009/03/29/78258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生活杂记。。。</title><link>http://www.cppblog.com/expter/archive/2009/03/08/75908.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sun, 08 Mar 2009 08:28:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/03/08/75908.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/75908.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/03/08/75908.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/75908.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/75908.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这周末本来打算租房的，结果还是没找到，很郁闷了，估计还得每天早起晚归一周，原因有几：房价太高，条件不好，都是中介舍不得中介费，家具配置也不咋全。<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这周在fox的帮助下，终于把Netmonitor搞完了，平时还是得多看书，多学习。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 周六找房子没找到，实习论文懒得写，晚上又真三了一盘。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 周末去上了会自习，看了下书，闲时看了下朋友的公务员题目，看了几道题有几个不会，汗一个<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 题目如下: (猜数字)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;.&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; 35&nbsp;&nbsp; ..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 猜下个数字<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;.&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; &nbsp;3&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 猜下个数字<br><br><br>&nbsp;&nbsp;&nbsp; 下周计划：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.没事就多看书，多看代码，多与其他人交流。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.每天晚上多熟悉shell编程。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、一定要确定房子。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4、提前一个月祝女友公务员考试成功。因为你生活更精彩！<br><br>&nbsp;&nbsp;</p>
<img src ="http://www.cppblog.com/expter/aggbug/75908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-03-08 16:28 <a href="http://www.cppblog.com/expter/archive/2009/03/08/75908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些学习笔记 ,陷阱，缺陷</title><link>http://www.cppblog.com/expter/archive/2009/03/08/75897.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sun, 08 Mar 2009 06:05:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/03/08/75897.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/75897.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/03/08/75897.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/75897.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/75897.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p><br>1、关于初始化:<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">deque</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Deque;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;一个deque容器</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>deque</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Deque2(Deque.begin(),Deque.end());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;一种初始化</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>copy(Deque.begin(),Deque.end(),back_inserter(Deque2)&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;一种初始化</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>deque</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Deque3(istream_iterator</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">(cin),istream_iterator</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">());&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;一种初始化</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
&nbsp; 现在讨论第三种初始化方式，<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">typedef&nbsp;istream_iteraor</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;(Func)();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>deque</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Deque3(istream_iteraotr</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;cin,&nbsp;Func);&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>看上去像一个函数声明，<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;istream_iteraor</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;(Func)();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>deque</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;f(stream_iteraor</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;,Func);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>现在比较清晰了吧，很像一个函数声明了，<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>所以第三种初始化方式根本就不能做任何事情.<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">如果真的要达到初始化的目标，可以通过括号来消除二义性</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">deque</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Deque3(&nbsp;(istream_iterator</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;(cin))&nbsp;,&nbsp;istream_iterator</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">()&nbsp;);</span></div>
<br>通过加括号来提示编译器我们这里提供的是构造函数的参数而非参数声明，因为 (istream_iterator&lt;string&gt; (cin))&nbsp; 不能解析为变量声明，这个更void f ( (int i)) 不可能是函数声明是一回事。多一对括号不可能解释为合法的声明语句。<br><br><br>2.关于double 和float 区别<br><br>一个例子
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_11_76_Open_Image onclick="this.style.display='none'; Codehighlighter1_11_76_Open_Text.style.display='none'; Codehighlighter1_11_76_Closed_Image.style.display='inline'; Codehighlighter1_11_76_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_11_76_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_11_76_Closed_Text.style.display='none'; Codehighlighter1_11_76_Open_Image.style.display='inline'; Codehighlighter1_11_76_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_11_76_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_11_76_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;&nbsp;x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;1e8;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(x&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span></div>
<br>现在的编译器一秒就可能运行完成，<br>如果吧doubel x = 1e8 ,换为 float x = 1e8;<br>&nbsp;C++标准说 :<br>&nbsp;浮点类型有三种: float ,double, long double,关于精度很显然<br>如果换成float 答案很诡异，因为取决于float的精度，能否表达0 1e8区间的整数<br><br>所以如果换为 float，可能运行一秒，也可能是死循环，因为如果float不能表达0 1e8区间的整数， 因为其中 n-1 = n (由于浮点精度不够)<br>。<br><br><br>3. 一些拼写代码错误<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iomanip</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_73_205_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_205_Open_Text.style.display='none'; Codehighlighter1_73_205_Closed_Image.style.display='inline'; Codehighlighter1_73_205_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_73_205_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_73_205_Closed_Text.style.display='none'; Codehighlighter1_73_205_Open_Image.style.display='inline'; Codehighlighter1_73_205_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_73_205_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_73_205_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_119_126_Open_Image onclick="this.style.display='none'; Codehighlighter1_119_126_Open_Text.style.display='none'; Codehighlighter1_119_126_Closed_Image.style.display='inline'; Codehighlighter1_119_126_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_119_126_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_119_126_Closed_Text.style.display='none'; Codehighlighter1_119_126_Open_Image.style.display='inline'; Codehighlighter1_119_126_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_119_126_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_119_126_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;下面这行代码会干些什么？递增???????/</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">x;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;std::endl;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>&nbsp; 一个支持标准c++的编译器答案输出是 1<br>&nbsp; 原因很诡异，因为有个有趣的是：注释末尾&#8216;??/&#8217;会被转换为'\' ，写个宏的都知道这个就是换行符，所以??/换转换为\ ，而++x就相当于粘贴到注释行的末尾&nbsp;，所以++x.,不会起作用，是注释的一部分。<br><br>在看一个例子：<br>一个符号标准 c++的编译器会报多少错误。<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;X&nbsp;<br><img id=Codehighlighter1_10_79_Open_Image onclick="this.style.display='none'; Codehighlighter1_10_79_Open_Text.style.display='none'; Codehighlighter1_10_79_Closed_Image.style.display='inline'; Codehighlighter1_10_79_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_10_79_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_79_Closed_Text.style.display='none'; Codehighlighter1_10_79_Open_Image.style.display='inline'; Codehighlighter1_10_79_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_10_79_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_10_79_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;f(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)<br><img id=Codehighlighter1_36_77_Open_Image onclick="this.style.display='none'; Codehighlighter1_36_77_Open_Text.style.display='none'; Codehighlighter1_36_77_Closed_Image.style.display='inline'; Codehighlighter1_36_77_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_36_77_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_36_77_Closed_Text.style.display='none'; Codehighlighter1_36_77_Open_Image.style.display='inline'; Codehighlighter1_36_77_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_36_77_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_36_77_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;p&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">[p]&nbsp;and&nbsp;not&nbsp;p[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">p[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<p>先一步一步的分析<br>1:0[p] 其实和p[0]一样<br>2: and not都是有效关键字 ，他们分别是&amp;&amp; 和!<br>3::&gt;竟然也是合法的，他是]的双字符写法。</p>
<p>所以这个语句会被解析为 return p &amp;&amp; p[0] &amp;&amp; !p[1]&gt;p[2] ，没有语法错误。<br>很诡异。</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/expter/aggbug/75897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-03-08 14:05 <a href="http://www.cppblog.com/expter/archive/2009/03/08/75897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近笔记以及总结！</title><link>http://www.cppblog.com/expter/archive/2009/02/22/74618.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sun, 22 Feb 2009 14:21:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/02/22/74618.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/74618.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/02/22/74618.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/74618.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/74618.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 来公司已经2周了，自己做的工作挺少，给的3周完成的一个编辑器，不到2周基本功能做完了，因为没有详细的设计，而且是内部的人员使用，很多的功能都是自己来规划的，其实我觉得平时在校的话 这个3-4天就可以做完，不知道为啥做了这么久！<br><br>&nbsp; &nbsp;&nbsp; 没看看着忙碌的同事，还有游戏正在三测，都在加班，我只是看一些一些接口，一些逻辑代码，没多大的事情，估计是刚来任务也很轻吧，呵呵！<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; 在校虽然学了主流的的语言，但是最后选择C++，因为它开发自由，效率高，结构性很强等等。最近看了几本书，对OOD,OOA，以及编写代码时的问题，与良好的设计模式有了一定的提高，但是对于有些又有些遗忘，比如STL，LUA,软件工程。在我看来，一个程序员必须有很好的算法功底与扎实的数据结构！最近手中还有几本书，打算闲的时候看，OOD启示录，boost也得学学,另外stl，设计模式和网络编程以及他的几种模型都要加强复习。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 在我看来一个项目只有有了这方面的理论知识，有一门熟练的语言，实现起来都很快，自己感觉缺少的是一种思想，架构思想，估计是自己接触的太少，经验太少，需要的是时间来催化！<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; 同时很高兴在新的环境认识了新的朋友，大家都很和善，同时也知道fox,kevinlynx也经常在CPPBLOG这里写日记，以后得像2位学习，以及公司的同事都是俺的前辈。<br><br>&nbsp; &nbsp;&nbsp; 在大学没有写个太大的程序，估计最大一个软件的在6K左右行吧(c++)，ACM估计在100多道，以及平时也的小东西不到20个项目。学习笔记，以及一些简单的win 32 编程还是有少许，比如底层驱动之类的。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 现在的任务就是多看一些大牛的技术blog，多看书，多写代码才是王道，以后编程尽量规范了，良好的风格以及更好设计模式，更优的算法才是最好的，在我平时做什么东西，都希望敢时间，几下就做不了了之。还得改正。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 我比较喜欢网络编程，平台方面主要是win,对于linux只是写过，平时玩玩。学得都比较浅毕竟没做个啥子大的商业项目。既然来了这个公司就要做出自己成绩。年轻有无限的激情，就要努力。<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 在等段时间就要写毕业设计和论文了，希望没多大问题，一个彩色人脸识别程序，关键是识别成功率！<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 在大学最后的时间即将完成，迈入社会就得认真对待任何事情了。努力工作，挣钱，养老婆，呵呵！ &nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp;&nbsp; 加油！！！就想kevinlynx那天说的，让人知道你能做什么，会什么！！<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 因为自己表达能力稍加，一般不写技术，怕描述因次误导或者乱说了，其实也没多大技术含量、、、呵呵 主要记录的生活笔记！<br>
<img src ="http://www.cppblog.com/expter/aggbug/74618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-02-22 22:21 <a href="http://www.cppblog.com/expter/archive/2009/02/22/74618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>09年新的一天开始</title><link>http://www.cppblog.com/expter/archive/2009/02/10/73415.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Tue, 10 Feb 2009 14:24:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/02/10/73415.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/73415.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/02/10/73415.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/73415.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/73415.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 今天是09年第一天上班，大早就起床，和同学一起去公司报道，而同学是去面试，今天的公交真堵啊，到公司刚好9点。到了公司等了2分钟前台才来。然后告诉她报道的事情。<br><br>&nbsp;&nbsp; 然后HR就给我安排了入职手续，然后带我去找了经理，分配了位置。&nbsp; 最后公司给我分配了电脑，配置确实不错 4核8200的 3G内存 独显，而且每个人2台电脑，一台内网一台外网。<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; 我拿到电脑后开始自己安装一些线路，安装好了后公司来了一个人给我配置了一些信息，比如公司邮件，FTP，资料之类的。 <br><br>&nbsp;&nbsp; 但是作为开发还是没有开发工具，此时正在等咋办呢，是不是要自己带一个盘在装呢，呵呵，这时fox（就是他才进这个公司，虽然去年我校招拿到8个offer，但是还是去这家，很感谢他啊）给我下载了一些开发软件和辅助工具，最后还传了内网的飞秋聊天软件，做得很是详细啊。<br><br>&nbsp;&nbsp; 上午大概就做了这些，就是分配电脑啊，配置系统，安装一些软件。<br><br><br>&nbsp;&nbsp; 下午fox给了一个任务，就是做一个宠物编辑器。然后给了一些相关文档，代码和配置文件。看了一下午的代码以及分析一些，有什么问题以及疑问都做了笔记。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; 明天开始设计与分析。画图了。。。<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; 学无止境，加油！！<br><br><br>09年的目标：<br>http://www.cppblog.com/expter/archive/2009/01/17/72223.html<br><br>
<img src ="http://www.cppblog.com/expter/aggbug/73415.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-02-10 22:24 <a href="http://www.cppblog.com/expter/archive/2009/02/10/73415.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新年即将来临。。2009年的计划。</title><link>http://www.cppblog.com/expter/archive/2009/01/17/72223.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sat, 17 Jan 2009 14:31:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/01/17/72223.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/72223.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/01/17/72223.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/72223.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/72223.html</trackback:ping><description><![CDATA[2008中国是一个多灾多难的年，我们在如此的日子渡过一段艰难的岁月。也希望全国人民新年有新的好运。<br>伴随着新年的新好运，新发展，新气息，&nbsp;2009年已经静悄悄的来临。<br><br>2008年有着不少的计划，但是没有都没有一一实现。<br>1.因为&#8220;计划总是赶不上变化&#8221;，有些事件被打断或者没完成就算了。<br>2.没有具体的计划与目标，比如做什么东西 做做就不做了，<br>3.找工作费了不少时间，加上学校的事情，没多少时间做具体的事件。<br>4.打游戏打太多，WAR3打得太多，虽说网游不大，但是打WAR3真三 还是累人。。<br><br>现在2009年的计划如下：<br>1.首先工作有所成绩！<br>&nbsp;&nbsp;&nbsp;&nbsp; 进公司一定要肯做，努力，学好技术，多总结，不懂的尽量的靠自己慢慢解决.<br><br>2.对于C/C++代码尽量规范，多看设计模式，尽量看架构方面的。<br>&nbsp;&nbsp;&nbsp; 多看书，代码尽量规范，熟悉设计模式，学习ACE。<br><br>3.平台尽量专一，但是还是要掌握linux编程，熟练掌握TCP/IP<br><br>4.学习英语，<br>&nbsp;&nbsp; 英语对于IT人员是很重要的，多学习与复习英语，加强口语联系。有机会进外企发展。<br><br>5.加强身体锻炼<br>&nbsp;&nbsp;&nbsp; 身体是革命的本钱，平时要跑步，打打篮球。<br><br>6.软考&nbsp;<br>&nbsp;&nbsp;&nbsp; 一方面为工作<br>&nbsp;&nbsp;&nbsp; 另一方面是为自己大学知识做一次测评。<br><br>暂时就这些了，想得太多反而记不得。。<br>下次记得了，有继续添加<br>
<div goog_docs_charindex="50"><br>作为一名即将迈入社会的程序员我也希望工作上有所成就。<br></div>
<img src ="http://www.cppblog.com/expter/aggbug/72223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-01-17 22:31 <a href="http://www.cppblog.com/expter/archive/2009/01/17/72223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>哈佛图书馆自习室墙上的训言</title><link>http://www.cppblog.com/expter/archive/2009/01/15/72121.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Thu, 15 Jan 2009 13:17:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/01/15/72121.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/72121.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/01/15/72121.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/72121.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/72121.html</trackback:ping><description><![CDATA[1.此刻打盹，你将做梦；而此刻学习，你将圆梦。<br>2.我荒废的今日，正是昨日殒身之人祈求的明日。<br>3.觉得为时已晚的时候，恰恰是最早的时候。<br>4.勿将今日之事拖到明日。<br>5.学习时的苦痛是暂时的，未学到的痛苦是终生的。<br>6.学习这件事，不是缺乏时间，而是缺乏努力。<br>7.幸福或许不排名次，但成功必排名次。<br>8.学习并不是人生的全部。但，既然连人生的一部分——学习也无法征服，还能做什么呢？<br>9.请享受无法回避的痛苦。<br>10.只有比别人更早、更勤奋地努力，才能尝到成功的滋味。<br>11.谁也不能随随便便成功，它来自彻底的自我管理和毅力。<br>12.时间在流逝。<br>13.现在淌的哈喇子，将成为明天的眼泪。<br>14.狗一样地学，绅士一样地玩。<br>15.今天不走，明天要跑。<br>16.投资未来的人是，忠于现实的人。<br>17.教育程度代表收入。<br>18.一天过完，不会再来。<br>19.即使现在，对手也不停地翻动书页。<br>20.没有艰辛，便无所获。
<img src ="http://www.cppblog.com/expter/aggbug/72121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-01-15 21:17 <a href="http://www.cppblog.com/expter/archive/2009/01/15/72121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一句经典话</title><link>http://www.cppblog.com/expter/archive/2009/01/09/71577.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Fri, 09 Jan 2009 04:06:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/01/09/71577.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/71577.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/01/09/71577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/71577.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/71577.html</trackback:ping><description><![CDATA[今天在一论坛看到这样一句话<span style="COLOR: #0000ff">：&#8220;他们来了你别傲慢，他们走了你更不用灰心。支持你的人会永远的支持，放弃你的人不可太过挽留，只要你做好，不断的完善自已，该来的还是会来。一个好的游戏他们没有理由不玩.我们会一直陪着你走到成功的那一天.就像中国的崛起永不退步。&#8221;<br><br><br>不管做什么都得坚持不懈！<br>学无止尽，Knowledge is infinite！</span> 
<img src ="http://www.cppblog.com/expter/aggbug/71577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-01-09 12:06 <a href="http://www.cppblog.com/expter/archive/2009/01/09/71577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：给新人程序员的八点建议</title><link>http://www.cppblog.com/expter/archive/2008/12/27/70524.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sat, 27 Dec 2008 11:10:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2008/12/27/70524.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/70524.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2008/12/27/70524.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/70524.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/70524.html</trackback:ping><description><![CDATA[<div style="MARGIN-BOTTOM: 15.6pt; TEXT-INDENT: 21pt"><strong><span style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt">走过弯路，有过迷茫，回首九年陈皓感慨万千。</span></strong><span style="FONT-SIZE: 10.5pt">&#8220;今天，我对许多刚上路的朋友都会说，人生的规则很重要，从上大学时就要好好规划。&#8221;他结合自身经历，<strong>对许多刚踏入程序员行列的新人程序员，他给出了以下八点建议：</strong></span></div>
<div style="MARGIN: 0cm 0cm 15.6pt 21pt; TEXT-INDENT: -21pt"><span style="FONT-SIZE: 10.5pt">1.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10.5pt">在大学的时候尽量多地进入公司参与实际工作，一方面积累工作经验，另一方面，提前认识工作和自己，以便毕业时更准确地把握自己的方向。</span></div>
<div style="MARGIN: 0cm 0cm 15.6pt 21pt; TEXT-INDENT: -21pt"><span style="FONT-SIZE: 10.5pt">2.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10.5pt">从毕业开始到毕业后至少</span><span style="FONT-SIZE: 10.5pt">5</span><span style="FONT-SIZE: 10.5pt">年内，踏踏实实地专研技术，这是一个积累过程，千万不要把心思放在钱和职位上。钱和职位只是能力的附属品，不要让其喧宾夺主。</span></div>
<div style="MARGIN: 0cm 0cm 15.6pt 21pt; TEXT-INDENT: -21pt"><span style="FONT-SIZE: 10.5pt">3.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10.5pt">从毕业后</span><span style="FONT-SIZE: 10.5pt">3</span><span style="FONT-SIZE: 10.5pt">年到</span><span style="FONT-SIZE: 10.5pt">7</span><span style="FONT-SIZE: 10.5pt">年的时间，注意学习工作当中的方法以及相关的管理和流程，不但要知其然，还要知其所以然。</span></div>
<div style="MARGIN: 0cm 0cm 15.6pt 21pt; TEXT-INDENT: -21pt"><span style="FONT-SIZE: 10.5pt">4.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10.5pt">30</span><span style="FONT-SIZE: 10.5pt">岁以前，踏踏实实地学习。学技术，学做人，学做事。</span><span style="FONT-SIZE: 10.5pt">30</span><span style="FONT-SIZE: 10.5pt">岁以后再谈自己的发展。</span></div>
<div style="MARGIN: 0cm 0cm 15.6pt 21pt; TEXT-INDENT: -21pt"><span style="FONT-SIZE: 10.5pt">5.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10.5pt">毕业后的前</span><span style="FONT-SIZE: 10.5pt">5</span><span style="FONT-SIZE: 10.5pt">年主要是量的积累，要不停地积累知识和方法。毕业后的</span><span style="FONT-SIZE: 10.5pt">5</span><span style="FONT-SIZE: 10.5pt">到</span><span style="FONT-SIZE: 10.5pt">10</span><span style="FONT-SIZE: 10.5pt">年主要是质变，应该着重于思维和想法的更新。后五年应该有很强的包容能力和接受新东西的能力，千万不要太过固执和坚持自己的想法。</span></div>
<div style="MARGIN: 0cm 0cm 15.6pt 21pt; TEXT-INDENT: -21pt"><span style="FONT-SIZE: 10.5pt">6.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10.5pt">换工作要&#8220;承前启后&#8221;，前面的工作会成为后面工作的一个基础，而后面的工作又会成为前面工作的一个很自然的延续。</span></div>
<div style="MARGIN: 0cm 0cm 15.6pt 21pt; TEXT-INDENT: -21pt"><span style="FONT-SIZE: 10.5pt">7.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10.5pt">不要只把心思放在技术上，技术是</span><span style="FONT-SIZE: 10.5pt">hard skill</span><span style="FONT-SIZE: 10.5pt">，只要下工夫就一定会掌握。更要注意与人沟通等为人处事的</span><span style="FONT-SIZE: 10.5pt">soft skill</span><span style="FONT-SIZE: 10.5pt">上。</span><span style="FONT-SIZE: 10.5pt">hard skill</span><span style="FONT-SIZE: 10.5pt">像一个大树的根，而</span><span style="FONT-SIZE: 10.5pt">soft skill</span><span style="FONT-SIZE: 10.5pt">则像一个大树的枝叶。树根是你的根基，能让你站得很稳，而枝叶能让你向天空伸展，获得发展。</span></div>
<div style="MARGIN: 0cm 0cm 15.6pt 21pt; TEXT-INDENT: -21pt"><span style="FONT-SIZE: 10.5pt">8.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10.5pt">对于程序员来说，应该始终记住，技术不是主要的，主要的是通过技术能够解决什么样的问题。一定经常想要解决什么的问题，要满足什么样的需求，而不是要用什么样的技术。</span></div>
<img src ="http://www.cppblog.com/expter/aggbug/70524.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2008-12-27 19:10 <a href="http://www.cppblog.com/expter/archive/2008/12/27/70524.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毕业前---最近看的书</title><link>http://www.cppblog.com/expter/archive/2008/12/22/70106.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Mon, 22 Dec 2008 14:05:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2008/12/22/70106.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/70106.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2008/12/22/70106.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/70106.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/70106.html</trackback:ping><description><![CDATA[&nbsp; 明年过年就要上班了，最近看了 effective c++ 和&nbsp; more effective c++<br>&nbsp;<br>&nbsp;今天有去图书馆借了3本书，准备回家过年看，<br><br>&nbsp; 这3本书为 C++编程艺术 ， exceptional&nbsp;c++ style , OOD启示录<br>&nbsp; 都是传说的好书，但是对于每一个来说不一定是好书， 先看完在说。。<br><br><br>其中Wesley的effective c++ 和&nbsp; more effective c++ 的确不错，加深了对c++的认识，以及OO的理解，项目中应该注意的问题！<br><br>&nbsp;加油咯，就要迈入社会了！<br><br><br>
<img src ="http://www.cppblog.com/expter/aggbug/70106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2008-12-22 22:05 <a href="http://www.cppblog.com/expter/archive/2008/12/22/70106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>心情沉重啊！</title><link>http://www.cppblog.com/expter/archive/2008/12/19/69868.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Fri, 19 Dec 2008 13:33:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2008/12/19/69868.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/69868.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2008/12/19/69868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/69868.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/69868.html</trackback:ping><description><![CDATA[<p>sohu被刷了。。<br>哎！<br><br>还是踏实点 好好学习吧！<br><br>现在的心情除了失落没有设么词形容了</p>
<img src ="http://www.cppblog.com/expter/aggbug/69868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2008-12-19 21:33 <a href="http://www.cppblog.com/expter/archive/2008/12/19/69868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：郑州招聘会 触目惊心图片背后究竟发生了什么</title><link>http://www.cppblog.com/expter/archive/2008/12/08/68818.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Mon, 08 Dec 2008 02:34:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2008/12/08/68818.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/68818.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2008/12/08/68818.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/68818.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/68818.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 2em">朋友发来一张图片，是大学生招聘的现场画面。看后竟无语以对。究竟发生了什么？看看通用、福特、克莱斯勒在破产边缘挣扎，雷曼兄弟轰然倒塌，今天英国最大的零售连锁Woolworths一英磅没人收购，宣布破产，还有更多的破产倒闭在继续，中国中小企业上半年已有近7万家倒闭。同样华尔街的金融危机正迅速演变成经济危机，这个笼罩在不少人不愿触及的敏感话题面纱正快速被撕掉，冬天刚刚开始。</p>
<p style="TEXT-INDENT: 2em">在复杂的国际形势和恶劣的经济环境下，独善其身的企业也不能侥幸。同样任何行业都必须为这此金融海啸埋单，包括银行。前几天我在回答和讯网马上访谈的栏目记者采访时，进一步提出&#8220;家电下乡&#8221;大跃进的危机所在，然而大量网友的指责并不能解除家电制造商脸上的尴尬。一方面来自渠道连锁的积怨已经爆发，另一方面内需的刺激几乎脱离了实际，还有内外交困的市场环境在一步步逼近并影响到其它行业。毫无疑问，矛盾在上升，众多的不确定性将在2009年1月-5月发生，不仅仅是将有更多的企业破产消逝，一系列社会问题也将考验我们每一个人。</p>
<p style="TEXT-INDENT: 2em">这些图片说明什么？其背后究竟发生了什么？几乎每一个人都会异口同声地想到一点那就是就业形势的严峻，然而这只是其一，真正的原因还有经济形势不容乐观，企业竞争力在衰减，市场需求在减少，通涨通缩的变化太快，中国教育的垢病凸显愈加清晰。等等。但我们是否问过自己，究竟是谁导演了这一切？</p>
<p style="TEXT-INDENT: 2em"><img height=320 src="http://www.cppblog.com/images/cppblog_com/expter/1.jpg" width=450 border=0><br><img height=334 src="http://www.cppblog.com/images/cppblog_com/expter/2.jpg" width=500 border=0><br><img height=334 src="http://www.cppblog.com/images/cppblog_com/expter/3.jpg" width=500 border=0><br><img height=300 src="http://www.cppblog.com/images/cppblog_com/expter/4.jpg" width=450 border=0><br><img height=332 src="http://www.cppblog.com/images/cppblog_com/expter/5.jpg" width=500 border=0><br><img height=332 src="http://www.cppblog.com/images/cppblog_com/expter/6.jpg" width=500 border=0><br><img height=333 src="http://www.cppblog.com/images/cppblog_com/expter/7.jpg" width=500 border=0><img height=300 src="http://www.cppblog.com/images/cppblog_com/expter/8.jpg" width=400 border=0><br><img height=346 src="http://www.cppblog.com/images/cppblog_com/expter/9.jpg" width=500 border=0><br><img height=352 src="http://www.cppblog.com/images/cppblog_com/expter/11.jpg" width=500 border=0><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img height=320 src="http://www.cppblog.com/images/cppblog_com/expter/10.jpg" width=450 border=0><br><br><img height=723 src="http://www.cppblog.com/images/cppblog_com/expter/13.jpg" width=500 border=0><br><br><a href="http://blog.photo.sina.com.cn/showpic.html#blogid=492fc1d10100byl0&amp;url=http://static6.photo.sina.com.cn/orignal/492fc1d1g5d46d0688a65" target=_blank></a></p>
<img src ="http://www.cppblog.com/expter/aggbug/68818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2008-12-08 10:34 <a href="http://www.cppblog.com/expter/archive/2008/12/08/68818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BLOG终于又开了。。。</title><link>http://www.cppblog.com/expter/archive/2008/10/20/64513.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Mon, 20 Oct 2008 10:45:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2008/10/20/64513.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/64513.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2008/10/20/64513.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/64513.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/64513.html</trackback:ping><description><![CDATA[<p>&nbsp; 在经历sohu不能编辑代码，csdn打开太慢后<br>终于放弃那2个BLOG，来到CPPBLOG开了我的第3个学习笔记<br><br>欢迎大家光临，这里将要记录我的学习，面试，工作，生活笔记</p>
<img src ="http://www.cppblog.com/expter/aggbug/64513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2008-10-20 18:45 <a href="http://www.cppblog.com/expter/archive/2008/10/20/64513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>