﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-iceboundrock-随笔分类-算法与数据结构学习</title><link>http://www.blogjava.net/iceboundrock/category/17549.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:43:14 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:43:14 GMT</pubDate><ttl>60</ttl><item><title>C++对象的构造、赋值和析构</title><link>http://www.blogjava.net/iceboundrock/archive/2006/11/25/83459.html</link><dc:creator>iceboundrock</dc:creator><author>iceboundrock</author><pubDate>Sat, 25 Nov 2006 08:08:00 GMT</pubDate><guid>http://www.blogjava.net/iceboundrock/archive/2006/11/25/83459.html</guid><wfw:comment>http://www.blogjava.net/iceboundrock/comments/83459.html</wfw:comment><comments>http://www.blogjava.net/iceboundrock/archive/2006/11/25/83459.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/iceboundrock/comments/commentRss/83459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iceboundrock/services/trackbacks/83459.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">C++</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">C#/java</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有很多区别，其中最大的区别当数对内存的管理。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">C++</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，类的使用者决定了类的实例内存会如何分配，分配在堆上还是栈上。我们先看一段例子程序：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">#include</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="COLOR: maroon">"stdio.h"<o:p></o:p></span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: maroon; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">class</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes"> Demo{<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">public</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">:<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>
						<span style="COLOR: blue">int</span> i;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>
						<span style="COLOR: blue">char</span>* objName;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo(){<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>objName = <span style="COLOR: maroon">"Default object."</span>;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>printf(<span style="COLOR: maroon">"%s, objName = %s\r\n"</span>, <span style="COLOR: maroon">"Enter Demo default ctor. method."</span>, objName);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>i = 1000;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo(<span style="COLOR: blue">int</span> ival, <span style="COLOR: blue">char</span>* name){<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>printf(<span style="COLOR: maroon">"%s,i = %d, objName = %s\r\n"</span>, <span style="COLOR: maroon">"Enter Demo(int ival) ctor method"</span>, ival, name);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>i = ival;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>objName = name;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo(<span style="COLOR: blue">const</span> Demo&amp; d){<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>printf(<span style="COLOR: maroon">"%s\r\n"</span>, <span style="COLOR: maroon">"Enter Demo copy ctor method."</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>i = d.i;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>objName = <span style="COLOR: maroon">"copied d"</span>;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>~Demo(){<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 2">        </span>printf(<span style="COLOR: maroon">"%s, i = %d, objName = %s\r\n"</span>, <span style="COLOR: maroon">"Enter Demo dector. method"</span> , i, objName);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">};<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">Demo&amp; testMethod0(){<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"%s\r\n"</span>, <span style="COLOR: maroon">"Enter testMethod0."</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo d(0, <span style="COLOR: maroon">"d in testMethod0"</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"%s\r\n"</span>, <span style="COLOR: maroon">"Exit testMethod0."</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>
						<span style="COLOR: blue">return</span> d;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">Demo testMethod1(){<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"%s\r\n"</span>, <span style="COLOR: maroon">"Enter testMethod1."</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo d(1, <span style="COLOR: maroon">"d in testMethod1"</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"%s\r\n"</span>, <span style="COLOR: maroon">"Exit testMethod1."</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>
						<span style="COLOR: blue">return</span> d;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">Demo* testMethod2(){<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"%s\r\n"</span>, <span style="COLOR: maroon">"Enter testMethod2."</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo *d = <span style="COLOR: blue">new</span> Demo(2, <span style="COLOR: maroon">"d in testMethod2"</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"%s\r\n"</span>, <span style="COLOR: maroon">"Exit testMethod2."</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>
						<span style="COLOR: blue">return</span> d;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">int</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes"> main(<span style="COLOR: blue">int</span> argc, _TCHAR* argv[])<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">{<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo d;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>d = testMethod1();<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo&amp; d1 = testMethod0();<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo d2(999, <span style="COLOR: maroon">"d1"</span>);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>Demo* d3 = testMethod2();<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"d.i = %d\r\n"</span>, d.i);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"d1.i = %d\r\n"</span>, d1.i);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"d2.i = %d\r\n"</span>, d2.i);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>printf(<span style="COLOR: maroon">"d3.i = %d\r\n"</span>, d3-&gt;i);<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>
						<span style="COLOR: blue">delete</span> d3;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<span style="mso-tab-count: 1">    </span>
						<span style="COLOR: blue">return</span> 0;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Consolas; mso-font-kerning: 0pt; mso-no-proof: yes">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Output</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo default ctor. method., objName = Default object.<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter testMethod1.<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo(int ival) ctor method,i = 1, objName = d in testMethod1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Exit testMethod1.<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo copy ctor method.<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo dector. method, i = 1, objName = d in testMethod1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo dector. method, i = 1, objName = copied d<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter testMethod0.<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo(int ival) ctor method,i = 0, objName = d in testMethod0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Exit testMethod0.<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo dector. method, i = 0, objName = d in testMethod0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo(int ival) ctor method,i = 999, objName = d1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter testMethod2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo(int ival) ctor method,i = 2, objName = d in testMethod2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Exit testMethod2.<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">d.i = 1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">d1.i = -2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">d2.i = 999<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">d3.i = 2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo dector. method, i = 2, objName = d in testMethod2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo dector. method, i = 999, objName = d1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; BACKGROUND: black; COLOR: lime; mso-highlight: black">Enter Demo dector. method, i = 1, objName = copied d</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: lime">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: lime">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">C#</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不同，在</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">C++</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，对象声明的时候就已经执行了构造函数，比如上面例子的</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">main</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数中的第一行，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Demo d</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，从屏幕上的输出来看，这个时候</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Demo class</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的默认构造函数会被调用。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接下来的一行代码调用，引出了很有趣的情况，当然也隐藏着不小的问题。这行代码造成了一次构造函数调用，一次拷贝构造函数调用和两次析构函数调用。让我们来具体分析一下：第一次调用构造函数很容易理解，因为在</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">testMethod1</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中我们声明了</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Demo d(0)</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，退出</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">testMethod1</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，函数的返回值要赋值给变量</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">d2</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这个时候，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">d2</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">被拷贝构造函数重新构造了一次。接着</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">testMethod1</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中构造的局部变量被析构，然后，居然拷贝构造函数构造的对象也被析构？等等，看完所有输出，我们发现，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">objName = copied d</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的对象被析构两次，而</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">objName = Default obj</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的对象被构造出之后没有被析构，这里隐藏了很严重的问题，有可能导致内存泄漏、句柄不能被正确关闭等等。另外，拷贝构造函数的执行可能导致潜在的效率问题，考虑一个包含巨大矩阵的对象，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">copy</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个对象会怎么样？</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接下来的一行代码，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">testMethod0</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回一个对象的引用，当然不会导致拷贝构造函数被调用，但是，这样也是有问题的，在函数中声明的局部变量在函数执行完成的时候会被析构，那么直接返回局部变量就可能会出现问题。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">testMethod0</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">退出以后，他内部的</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Demo</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象就会自动析构，外面对它的引用当然也无法指向正确的对象了，所以后面程序打印</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">d.i</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候，输出了一个莫名其妙的</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">-2</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">效率最好的方法当数返回指针了，它不会导致对象复制，如果使用得当，也不会导致内存泄漏或者句柄泄漏。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">testMethod2</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">演示了这种情况，当然，你需要手工删除在</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">testMethod2</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中创建的对象。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p> </o:p>
				</span>
		</p>
<img src ="http://www.blogjava.net/iceboundrock/aggbug/83459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iceboundrock/" target="_blank">iceboundrock</a> 2006-11-25 16:08 <a href="http://www.blogjava.net/iceboundrock/archive/2006/11/25/83459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++中麻烦的const（1）</title><link>http://www.blogjava.net/iceboundrock/archive/2006/11/22/82825.html</link><dc:creator>iceboundrock</dc:creator><author>iceboundrock</author><pubDate>Wed, 22 Nov 2006 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/iceboundrock/archive/2006/11/22/82825.html</guid><wfw:comment>http://www.blogjava.net/iceboundrock/comments/82825.html</wfw:comment><comments>http://www.blogjava.net/iceboundrock/archive/2006/11/22/82825.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iceboundrock/comments/commentRss/82825.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iceboundrock/services/trackbacks/82825.html</trackback:ping><description><![CDATA[
		<p>关于const，C++的const是一个非常非常麻烦的关键字，但是如果你不用，也会带来一些麻烦。</p>
		<p>下面一段简单的程序，演示了const变量，const指针的奇妙关系</p>
		<p> </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"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">stdafx.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> _tmain(</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> argc, _TCHAR</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000"> argv[])<br /></span>
				<span style="COLOR: #008080"> 5</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_59_506_Open_Image" onclick="this.style.display='none'; Codehighlighter1_59_506_Open_Text.style.display='none'; Codehighlighter1_59_506_Closed_Image.style.display='inline'; Codehighlighter1_59_506_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_59_506_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_59_506_Closed_Text.style.display='none'; Codehighlighter1_59_506_Open_Image.style.display='inline'; Codehighlighter1_59_506_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span id="Codehighlighter1_59_506_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.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_59_506_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080"> 6</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">const</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> constInt1 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">const</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000">constIntPoint </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> NULL;<br /></span>
						<span style="COLOR: #008080"> 9</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">10</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000">IntPoint </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> NULL;<br /></span>
						<span style="COLOR: #008080">11</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">12</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> constIntPoint </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">&amp;</span>
						<span style="COLOR: #000000">constInt1;<br /></span>
						<span style="COLOR: #008080">13</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">const</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> constInt2 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">2</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080">15</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">16</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> Int3 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">3</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080">17</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> <br /></span>
						<span style="COLOR: #008080">18</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">IntPoint = &amp;constInt2; </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">Error 1</span>
						<span style="COLOR: #008000">
								<br />
						</span>
						<span style="COLOR: #008080">19</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">20</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">21</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> constIntPoint </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">&amp;</span>
						<span style="COLOR: #000000">Int3;<br /></span>
						<span style="COLOR: #008080">22</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">23</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">(*constIntPoint)++; </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">Error 2</span>
						<span style="COLOR: #008000">
								<br />
						</span>
						<span style="COLOR: #008080">24</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">25</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">constInt1=%d\r\n</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, constInt1);<br /></span>
						<span style="COLOR: #008080">26</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">constInt2=%d\r\n</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, constInt2);<br /></span>
						<span style="COLOR: #008080">27</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Int3=%d\r\n</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, Int3);<br /></span>
						<span style="COLOR: #008080">28</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">29</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">constIntPoint point to %d\r\n</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000">constIntPoint);<br /></span>
						<span style="COLOR: #008080">30</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080">31</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">32</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080">33</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>
				<br />最简单最清晰的const使用方法就是声明const变量了，变量需要在生命的地方立即初始化，初始化完成之后就不能再改了。</p>
		<p>如果你用同样的思路来看待const指针，你会发现你错的很严重，你看，这个constIntPoint换了几个目标依然生龙活虎，编译器很愉快的接受了这段代码，连个warn都没有。<br />原来const指针是指向const变量的指针，而不是说指针本身是const的。无</p>
		<p>ok，const变量不能直接修改，难道我取到他的地址，再来修改都不行么？不行，编译器会直接告诉你，无法把一个const的指针转换成普通指针，<br /><br />Error 1 error C2440: '=' : cannot convert from 'const int *__w64 ' to 'int *' </p>
		<p>论一个变量原来是否被声明成const，你用一个const指针指向它，然后使用*运算符号取出这个变量试图进行修改的操作都是不允许的，参考代码中被注释掉的Error2。<br /><br />Error 2 error C3892: 'constIntPoint' : you cannot assign to a variable that is const <br /></p>
<img src ="http://www.blogjava.net/iceboundrock/aggbug/82825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iceboundrock/" target="_blank">iceboundrock</a> 2006-11-22 17:03 <a href="http://www.blogjava.net/iceboundrock/archive/2006/11/22/82825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重拾C++</title><link>http://www.blogjava.net/iceboundrock/archive/2006/11/22/82813.html</link><dc:creator>iceboundrock</dc:creator><author>iceboundrock</author><pubDate>Wed, 22 Nov 2006 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/iceboundrock/archive/2006/11/22/82813.html</guid><wfw:comment>http://www.blogjava.net/iceboundrock/comments/82813.html</wfw:comment><comments>http://www.blogjava.net/iceboundrock/archive/2006/11/22/82813.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iceboundrock/comments/commentRss/82813.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iceboundrock/services/trackbacks/82813.html</trackback:ping><description><![CDATA[自从上次项目中使用C++到现在，已经有一年半没有再碰过C++了。虽然C++依旧是我心中最向往去使用的语言。<br />打算借着这次复习数据结构与算法的机会重拾C++。今天做了两个容器类，发现很多基础语法的东西我都已记得经模棱两可了，sigh，看来真是要努力才行了。<img src ="http://www.blogjava.net/iceboundrock/aggbug/82813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iceboundrock/" target="_blank">iceboundrock</a> 2006-11-22 16:34 <a href="http://www.blogjava.net/iceboundrock/archive/2006/11/22/82813.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>