<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>EverydayWork of fallhunter</title>
	<atom:link href="http://blog.donews.com/fallhunter/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.donews.com/fallhunter</link>
	<description>busy for nothing</description>
	<lastBuildDate>Sun, 13 Aug 2006 06:29:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>C++ Templates: The Complete Guide</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/08/13/998024.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/08/13/998024.aspx#comments</comments>
		<pubDate>Sun, 13 Aug 2006 06:29:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/08/13/998024.aspx</guid>
		<description><![CDATA[<p><a onclick="return amz_js_PopWin('http://www.amazon.com/gp/product/images/0201734842/ref=dp_image_0/002-9818760-8338457?ie=UTF8&#38;n=283155&#38;s=books','AmazonHelp','width=700,height=600,resizable=1,scrollbars=1,toolbar=0,status=1');" href="http://www.amazon.com/gp/product/images/0201734842/ref=dp_image_0/002-9818760-8338457?ie=UTF8&#38;n=283155&#38;s=books" target="AmazonHelp"><img id="prodImage" height="240" alt="C++ Templates: The Complete Guide" src="http://ec1.images-amazon.com/images/]]></description>
			<content:encoded><![CDATA[<p><a onclick="return amz_js_PopWin('http://www.amazon.com/gp/product/images/0201734842/ref=dp_image_0/002-9818760-8338457?ie=UTF8&amp;n=283155&amp;s=books','AmazonHelp','width=700,height=600,resizable=1,scrollbars=1,toolbar=0,status=1');" href="http://www.amazon.com/gp/product/images/0201734842/ref=dp_image_0/002-9818760-8338457?ie=UTF8&amp;n=283155&amp;s=books" target="AmazonHelp"><img id="prodImage" height="240" alt="C++ Templates: The Complete Guide" src="http://ec1.images-amazon.com/images/P/0201734842.01._AA240_SCLZZZZZZZ_V61417599_.jpg" width="240" border="0"/></a></p>
<p>Amazon上的一个评价：<strong>You&#8217;ll laugh, you&#8217;ll cry, you&#8217;ll fall down&#8230;<br/></strong>enjoying&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/08/13/998024.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>from a template of singleton</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/05/19/876700.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/05/19/876700.aspx#comments</comments>
		<pubDate>Fri, 19 May 2006 09:14:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/05/19/876700.aspx</guid>
		<description><![CDATA[本文并非讲述Singleton模式，而仅仅是通过这个模式的实现来挖掘设计时应该考虑的问题和一些不常用的语言特性，并讨论这些语言特性给我们带来的好处。
单件模式 CRTP 私有派生]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本文并非讲述</span><span lang="EN-US"><font face="Times New Roman">Singleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式，而仅仅是通过这个模式的实现来挖掘设计时应该考虑的问题和一些不常用的语言特性，并讨论这些语言特性给我们带来的好处。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">
<p><font face="Times New Roman" size="3">&nbsp;</font></p>
<p></span></p>
<p><font face="Times New Roman" size="3">&nbsp;</font></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;"><font size="3">在单件模式中，我们通过将类的构造函数定义为私有或保护来防止用户创建多个类的对象，而在类中提供一个静态函数返回一个全局唯一类对象来提供对唯一对象的访问，如：</font></span></p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 1
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">class</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"> Singleton
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">public</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">static</span> Singleton &amp; Instance()
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">return</span> m_pInstance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">protected</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>Singleton(){}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>~Singleton(){}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">private</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">static</span> Singleton m_pInstance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">};
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">这种方法的一个变种是在</span><span lang="EN-US"><font face="Times New Roman">Instance</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">函数中声明静态实例：</span></font></p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 2
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>Singleton &amp; Singleton::Instance()
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>static Singleton c_Instance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">return</span> c_Instance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">第二种方法的好处是在该类在第一次使用时才被创建出来。然而有一些编译器在类的构造和析构为私有时并不能正确处理该代码。这种方法另外的问题就是</span><span lang="EN-US"><font face="Times New Roman">static</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">不能带给我们足够的灵活性，很多情况下单件类事例的创建要依赖于其他类，或者这种创建本身就是一个工厂模式；还有一个很严重的问题就是对于</span><span lang="EN-US"><font face="Times New Roman">static </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">对象的创建和销毁没有控制权，在</span><span lang="EN-US"><font face="Times New Roman">Example 1</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">中，对象在</span><span lang="EN-US"><font face="Times New Roman">main</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">函数之前被创建，在</span><span lang="EN-US"><font face="Times New Roman">Example 2</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">中，对象在第一次使用时被创建，两个例子中，对象都是在程序结束时被销毁（</span><span lang="EN-US"><font face="Times New Roman">main</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">之后），对象的创建和销毁都是由</span><span lang="EN-US"><font face="Times New Roman">c++ runtime</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">处理的，而</span><span lang="EN-US"><font face="Times New Roman">c++</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">标准对于创建和销毁的顺序没有规定，也就是当系统中有多个类似的对象时，我们不知道编译器会以什么顺序来创建和销毁它们，在一个有着复杂依赖关系的系统中，上述方法无疑是没有现实意义的。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">因此，我们使用指针来创建和存储单件：</span></font></p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 3
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">class</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"> Singleton
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">public</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">static</span> Singleton * Instance()
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">if</span> ( m_pInstance )
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">return</span> *m_pInstance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">else</span>
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">return</span> new Singleton();<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">此处可替换为更灵活的创建方式<span lang="EN-US">
</p>
<p></span></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">protected</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>Singleton(){}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>~Singleton(){}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">private</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">static</span> Singleton * m_pInstance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">};
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">为了提供对销毁对象的控制，我们可以提供一个静态的</span><span lang="EN-US"><font face="Times New Roman">Destory</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">方法来销毁对象：</span></font></p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 4
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">void </span>Singleton::Destroy()
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">if</span> ( m_pInstance )
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">delete </span>m_pInstance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">
<p><font face="Times New Roman" size="3">&nbsp;</font></p>
<p></span></p>
<p><font face="Times New Roman" size="3">&nbsp;</font></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">在大型系统（如游戏）中，存在大量的单件类，为每一个类都书写上述的代码既不合算又不够专业，既然是相同的代码，我们有必要将其抽象出来，</span><span lang="EN-US"><font face="Times New Roman">c++</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">提供了一个有利的工具</span><span lang="EN-US"><font face="Times New Roman">template</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">：</span></font></p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 5
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">template &lt;class T&gt;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">class</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"> Singleton
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">public</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">static</span> T * Instance()
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">if</span> ( m_pInstance )
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">return</span> *m_pInstance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">else</span>
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">return</span> new T();
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">protected</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>Singleton(){}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>~Singleton(){}
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">private</span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">static</span> T * m_pInstance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">};
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">在使用时，只要从该模版声明一个实例：</span></font></p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 6
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>class SomeSingleton{};<span style="mso-tab-count: 1"> </span>// </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">你的想成为单件的类<span lang="EN-US">
</p>
<p></span></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>Singleton&lt;SomeSingleton&gt; s_MySingleton;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">
<p>&nbsp;</p>
<p></span></p>
<p>&nbsp;</p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">这个模版虽然为我们省去了很多不必要的输入工作，</span><span lang="EN-US"><font face="Times New Roman">s_MySingleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">也的的确确是一个单件的对象，然而我们可以看到，这里的</span><span lang="EN-US"><font face="Times New Roman">SomeSingleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">类并不是一个单件，用户依然可以创建多个</span><span lang="EN-US"><font face="Times New Roman">SomeSingleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">的对象，事实上，这就算不上是一个单件模式了。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">问题的原因是模版</span><span lang="EN-US"><font face="Times New Roman">Singleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">是一个单件类，而我们的类不是，要使得我们的类成为一个单件，就要让我们的类</span><span lang="EN-US"><font face="Times New Roman">is-a Singleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">：</span></font></p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 7
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>class SomeSingleton : public Singleton&lt;SomeSingleton&gt;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">protected:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>SomeSingleton(){};
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">};
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">在这种派生中，基类是以子类实例化的模版，这种模式有一个特殊的名称，叫做：</span><span lang="EN-US"><font face="Times New Roman">Curiously Recurring Template Pattern (CRTP)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">，在网上看到有人译为&ldquo;诡异而循环的模版模式&rdquo;，别管译的是否恰当，这种方法的确是很诡异！</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">在这里，</span><span lang="EN-US"><font face="Times New Roman">SomeSingleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">的基类是模版</span><span lang="EN-US"><font face="Times New Roman">Singleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">的一个实例，这个实例是用</span><span lang="EN-US"><font face="Times New Roman">SomeSingleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">来实现的，这种方法实际上给了我们一种在基类中控制派生类的能力，</span><span lang="EN-US"><font face="Times New Roman">CRTP</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">是一个较为复杂且庞大的概念，以我目前的水平还不能将其讲清楚。详细的介绍可以参见《</span><span lang="EN-US"><font face="Times New Roman">thinking in c++</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">》和《</span><span lang="EN-US"><font face="Times New Roman">c++ template</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">》。</span><span lang="EN-US"><font face="Times New Roman">CRTP</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">是一种惯用法，但它并非</span><span lang="EN-US"><font face="Times New Roman">c++</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">特有，</span><span lang="EN-US"><font face="Times New Roman">CRTP</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">提出者</span><span lang="EN-US"><font face="Times New Roman">Jim Coplien</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">曾用多种语言展示过</span><span lang="EN-US"><font face="Times New Roman">CRTP</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">我们回到对单件模版的讨论，此代码将无法通过编译，原因是在基类的</span><span lang="EN-US"><font face="Times New Roman">Instance</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">函数中访问了派生类的构造函数，而派生类的构造函数是保护的，因此，我们还需要做一下修改：</span></font></p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 8
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>class SomeSingleton : public Singleton&lt;SomeSingleton&gt;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>friend Singleton&lt;SomeSingleton&gt;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">protected:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>SomeSingleton(){};
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">};
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">将基类声明为派生类的友元类，这样，在基类中就可以访问派生类的构造函数了。到此这个单件模版应该是可以满足需要了，然而仔细考虑后我们发觉让用户通过基类的指针或引用来访问我们的单件并不是件好事，也就是说</span><span lang="EN-US"><font face="Times New Roman">is-a</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">关系并不恰当</span><span lang="EN-US"><font face="Times New Roman">(</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">关于这个论断我还没有太深刻的感触，此处</span><span lang="EN-US"><font face="Times New Roman">is-a</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">关系关键的缺点是什么？</span><span lang="EN-US"><font face="Times New Roman">)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">对于这个问题，有人提出了以下解决方案：</span></font></p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 9
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>class SomeSingleton : <span style="COLOR: red">private</span> Singleton&lt;SomeSingleton&gt;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">};
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">这样就将继承关系从公有变成了私有，关于私有继承，有必要再要讨论一下。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">我们以前在学习过私有继承时仅仅知道它使得基类中所有的成员都成为派生类的</span><span lang="EN-US"><font face="Times New Roman">private</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">成员，然而我认为这并不足以作为这个语言特性被设计出来的原因，实际上，私有继承有着更深层的含义：</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">私有继承中派生类和基类之间的关系是私有的，也就是说我们不能看到一个派生类是从某个基类继承过来的，这样就和公有继承产生了本质的不同，我们知道公有继承是一种</span><span lang="EN-US"><font face="Times New Roman">is-a</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">关系，也就是我们可以把派生类当作一个基类来用。而在私有继承中，在派生类外部我们看不到继承关系，所以私有继承也就不再是一种</span><span lang="EN-US"><font face="Times New Roman">is-a</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">关系，而变成了一种</span><span lang="EN-US"><font face="Times New Roman">has-a</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">关系。事实上，编译器并不会将私有继承的派生类对象转型为基类对象。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">既然私有继承是一种</span><span lang="EN-US"><font face="Times New Roman">has-a</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">关系，那么私有继承和</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">组合</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">(composition)</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">有什么相同和不同？其实私有继承和组合仅仅是</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">has-a</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">关系两种语法上的实现，在组合中，一般情况下（非友元）宿主类只能操纵组合类的公有成员，这符合对象封装的要求，耦合较小；而在私有继承中，由于继承关系的特点，派生类可以访问基类的共有和保护成员，然而这种权力的增加也就意味着责任的增加，因为这样使得它们之间的耦合更大一些，因此这一般仅作为一个短程的解决方案，另外，私有继承在某些情况下可以将派生类对象强制转型成基类对象来使用，而且利用私有继承，编译器把没有非静态成员变量的基类大小优化为</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">0</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，而组合则不行。在一般情况下，使用组合可以很好的完成类结构的设计，对私有继承，还是要持谨慎的态度，关于私有继承的详细介绍，可参加网上的《</span><span lang="EN-US"><font face="Times New Roman">C++</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">箴言：谨慎使用私有继承</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">》一文。</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">
</p>
<p></span></font></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="3"><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">另外一个有意思的问题就是保护派生，它基本和私有派生一样，所不同的是这种派生关系可以被派生类的派生类所看到，也就是基类的&ldquo;孙类&rdquo;可以访问到基类。这种派生关系比私有继承更不常用。俺也不是很懂，不敢多说了</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial"> <img src='http://blog.donews.com/fallhunter/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">关于</span><span lang="EN-US"><font face="Times New Roman">CRTP</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">以及私有，《程序员》</span><span lang="EN-US"><font face="Times New Roman">2001/8</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">有一篇非常好的文章，网上有转载《</span><span lang="EN-US"><font face="Times New Roman">CountingObjectsinC++</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">》或《在</span><span lang="EN-US"><font face="Times New Roman"> C++ </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">中计算对象个数》，另外</span><span lang="EN-US"><font face="Times New Roman">CSDN</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">社区关于此文也有一些讨论可以参考。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">回到我们的例子，这样一来，对于派生类的外部来说，就看不到派生类的继承关系，也就好像它不是从任何类派生出来一样。然而这里还有一个问题，就是我们单件要使用的</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">Instance()</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">函数，是在基类中定义的，虽然在基类中是公有的，但由于私有派生，在派生类中就变成了私有，这样我们就不能调用派生类的</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">Instance()</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">函数了。解决这个问题的方法是将</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">Instance</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">函数提升为公有：</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">
</p>
<p></span></font></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">Example 10
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>class SomeSingleton : <span style="COLOR: red">private</span> Singleton&lt;SomeSingleton&gt;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">{
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">public:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>using Singleton&lt;SomeSingleton&gt;::Instance;
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">protected:
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>SomeSingleton();
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-line-height-alt: 0pt; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">};
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">这里使用</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">using</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">关键字来改变基类中函数的访问控制，到此，我们的单件模版类就算近乎完美的完成了。</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">
</p>
<p></span></font></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">然而像所有戏剧性的故事一样，在我们追求使用高级语言特性来解决问题的时候，往往忽略了原始而朴素的解决方案，在没有</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">template</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的&ldquo;黑暗的</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">c</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">年代&rdquo;，曾经有一种大放光彩的技术，它的名字叫做宏：</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">
</p>
<p></span></font></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">宏的作用远不止定义常量，看这个例子：</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: Arial">
</p>
<p></span></font></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">#define DEFINE_SINGLETON(cls)\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>private:\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>static cls * m_pInstance;\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>protected:\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>cls(){}\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>public:\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>static cls* Instance(){\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(!m_pInstance){\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_pInstance = new cls();\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>return m_pInstance;\<br/></span><span lang="EN-US" style="FONT-SIZE: 9pt; mso-ascii-font-family: 新宋体; mso-font-kerning: 0pt; mso-fareast-font-family: 新宋体"><font face="Times New Roman">&nbsp;&nbsp;</font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br style="mso-special-character: line-break"/><br style="mso-special-character: line-break"/>
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">#define IMPLEMENT_SINGLETON(cls) \
</p>
<p></span></p>
</p>
<p class="MsoNormal" style="BACKGROUND: #ffff99; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">cls * cls::m_pInstance = NULL;<br/></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-font-kerning: 0pt">假定你需要实现一个单件类<span lang="EN-US">YY</span>，这样书写：<span lang="EN-US"><br/>class YY {<br/>DEFINE_SINGLETON(YY);<br/>public:<br/>//your interfaces here&#8230;<br/>};<br/></span>在<span lang="EN-US">cpp</span>文件中：<span lang="EN-US"><br/>IMPLEMENT_SINGLETON(YY);<br/></span>需要引入这个类的实例的时候，使用这样的语句：<span lang="EN-US"><br/>YY* pYY = YY::Instance();<br style="mso-special-character: line-break"/><br style="mso-special-character: line-break"/>
</p>
<p></span></span></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">没有复杂的模版，没有诡异的</span><span lang="EN-US"><font face="Times New Roman">CRTP</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">，仅仅是</span><span lang="EN-US"><font face="Times New Roman">#define</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">，虽然这种实现的效果比起模版来说还是有些不足，然而其简洁易用，也算是很不错的解决方案了。《大规模</span><span lang="EN-US"><font face="Times New Roman">c++</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">程序设计》曾这样写，好的软件工程师与蹩脚的软件工程师的区别就是他知道什么时候停止。事实上对于好的设计的追求是永无止境的，而现实中我们需要的并非一定是最优解，在很多成功的软件中，其设计并不像我们想象中的那样优雅，恰到好处的设计，才是真是好而实用的设计。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US">
<p><font face="Times New Roman" size="3">&nbsp;</font></p>
<p></span></p>
<p><font face="Times New Roman" size="3">&nbsp;</font></p>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;"><font size="3">参考资料：</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><font face="Times New Roman"><span lang="EN-US" style="mso-fareast-font-family: &quot;Times New Roman&quot;"><span style="mso-list: Ignore"><font size="3">1.</font><span style="FONT: 7pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3">singleton/template problem: deriving and the access level, </font><a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=298359"><font size="3">http://www.gamedev.net/community/forums/topic.asp?topic_id=298359</font></a></span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: &quot;Times New Roman&quot;"><span style="mso-list: Ignore"><font face="Times New Roman"><font size="3">2.</font><span style="FONT: 7pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span><font size="3"><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Arial Unicode MS&quot;; mso-hansi-font-family: &quot;Arial Unicode MS&quot;">在</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: &quot;Arial Unicode MS&quot;"><font face="Times New Roman">c++</font></span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Arial Unicode MS&quot;; mso-hansi-font-family: &quot;Arial Unicode MS&quot;">中计算对象个数《程序员》</span><span lang="EN-US" style="COLOR: black; FONT-FAMILY: &quot;Arial Unicode MS&quot;"><font face="Times New Roman">2001/8</font></span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: &quot;Times New Roman&quot;"><span style="mso-list: Ignore"><font face="Times New Roman"><font size="3">3.</font><span style="FONT: 7pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;"><font size="3">《面向对象的游戏开发》</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: &quot;Times New Roman&quot;"><span style="mso-list: Ignore"><font face="Times New Roman"><font size="3">4.</font><span style="FONT: 7pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">一种自动的</span><span lang="EN-US"><font face="Times New Roman">singleton</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">工具，《游戏编程精粹</span><span lang="EN-US"><font face="Times New Roman">1</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;">》</span></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/05/19/876700.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>相见恨晚</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/03/30/802751.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/03/30/802751.aspx#comments</comments>
		<pubDate>Thu, 30 Mar 2006 07:07:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[BOOKS]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/03/30/802751.aspx</guid>
		<description><![CDATA[<p><a onclick="return amz_js_PopWin('http://www.amazon.com/gp/product/images/0201834545/ref=dp_image_0/102-2170624-1573753?%5Fencoding=UTF8&#38;n=283155&#38;s=books','AmazonHelp','width=570,height=600,resizable=1,scrollbars=1,toolbar=1,status=1');" href="http://www.amazon.com/gp/product/images/0201834545/ref=dp_image_0/102-2170624-1573753?%5Fencoding=UTF8&#38;n=283155&#38;s=books" target="AmazonHelp"><img id="prodImage" style="WIDTH: 129px; HEIGHT: 121px" height="240" alt="Inside the C++ Object ]]></description>
			<content:encoded><![CDATA[<p><a onclick="return amz_js_PopWin('http://www.amazon.com/gp/product/images/0201834545/ref=dp_image_0/102-2170624-1573753?%5Fencoding=UTF8&amp;n=283155&amp;s=books','AmazonHelp','width=570,height=600,resizable=1,scrollbars=1,toolbar=1,status=1');" href="http://www.amazon.com/gp/product/images/0201834545/ref=dp_image_0/102-2170624-1573753?%5Fencoding=UTF8&amp;n=283155&amp;s=books" target="AmazonHelp"><img id="prodImage" style="WIDTH: 129px; HEIGHT: 121px" height="240" alt="Inside the C++ Object Model" src="http://images.amazon.com/images/P/0201834545.01._AA240_SCLZZZZZZZ_.jpg" width="240" border="0"/></a><img height="124" alt="Book Cover" src="http://images.barnesandnoble.com/images/3630000/3633080.gif" width="100" border="0"/></p>
</p>
<p>Inside the c++ object model 应该是不用多说了，光看Amazon上的9个五星也知道其分量了，好在经过不太长的预约，借到了侯捷先生的译本：<br/>&ldquo;C++成山似海的书籍堆中，这一本不是婴幼儿奶粉，也不是较大婴儿奶粉，它是成人专用的低脂高钙特殊奶粉&rdquo;<br/>没有读过此书的C++er们，想长大吗，准备好，该喝奶了。</p>
<p>Large Scale C++ Software Design&nbsp;却没有得到如此好的评价，在此忍不住要为其辩护一下，此书是继古老的圣经 K&amp;R 的 The C Programming Language之后唯一让我感到如此震撼和如此强烈的共鸣的，在读The C Programming Language时，由于还对c甚至编程一无所知，因此书中几乎每句话都能给人大量的信息；而如今读Large Scale c++ Software Design，似乎又回到了那个懵懂的时代，面对着一个崭新的世界，每一句都让人回味。读此书，联想到实际编码的经历，时刻都让你有拍案叫绝的冲动，原来那些百思不解的问题背后有如此深厚的知识体系，犹如在一望无际的沙漠中发现了传说中的宝藏，怎么能让人不兴奋呢！唯一可惜的问题是中文翻译不敢恭维，而原版只找到电子版。</p>
<p><br/>这两本书放到一起再恰当不过了，大体上一看，前者是对c++机制向更深处的挖掘，让人了解底层实现；而后者是对c++软件项目架构设计上的探讨，是宏观的拓展。然而，二者其实都是对语言实现底层问题的说明和解决，没有对底层知识的深刻理解，根本无法设计出好的宏观架构，这不正是我们伟大自然界一贯的规律么，从微观到宏观，是何其的相似!</p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/03/30/802751.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Master of DOOM</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/03/25/792301.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/03/25/792301.aspx#comments</comments>
		<pubDate>Sat, 25 Mar 2006 13:17:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[BOOKS]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/03/25/792301.aspx</guid>
		<description><![CDATA[<p><img height="150" alt="Masters of Doom" src="http://www.randomhouse.com/catalog/catalog_cover.pperl?9781588362896" border="1"/></p><p></p><p>DOOM启示录</p><p>&#8230;&#8230;我不需要走到大峡谷边才能感叹于造物的神奇,我可以就坐在屋里,看光线反射的样子&#8230;&#8230;<br/>John Carmack </p>]]></description>
			<content:encoded><![CDATA[<p><img height="150" alt="Masters of Doom" src="http://www.randomhouse.com/catalog/catalog_cover.pperl?9781588362896" border="1"/></p>
</p>
<p>DOOM启示录</p>
<p>&hellip;&hellip;我不需要走到大峡谷边才能感叹于造物的神奇,我可以就坐在屋里,看光线反射的样子&hellip;&hellip;<br/>John Carmack </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/03/25/792301.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>面向对象的游戏开发</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/03/24/790661.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/03/24/790661.aspx#comments</comments>
		<pubDate>Fri, 24 Mar 2006 08:17:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[BOOKS]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/03/24/790661.aspx</guid>
		<description><![CDATA[<p><a onclick="return amz_js_PopWin('http://www.amazon.com/gp/product/images/032117660X/ref=dp_image_0/102-0509494-6433739?%5Fencoding=UTF8&#38;n=507846&#38;s=books','AmazonHelp','width=570,height=600,resizable=1,scrollbars=1,toolbar=1,status=1');" href="http://www.amazon.com/gp/product/images/032117660X/ref=dp_image_0/102-0509494-6433739?%5Fencoding=UTF8&#38;n=507846&#38;s=books" target="AmazonHelp"><img id="prodImage" height="240" alt="Object-Oriented Game Development" src="http://ec1.images-a]]></description>
			<content:encoded><![CDATA[<p><a onclick="return amz_js_PopWin('http://www.amazon.com/gp/product/images/032117660X/ref=dp_image_0/102-0509494-6433739?%5Fencoding=UTF8&amp;n=507846&amp;s=books','AmazonHelp','width=570,height=600,resizable=1,scrollbars=1,toolbar=1,status=1');" href="http://www.amazon.com/gp/product/images/032117660X/ref=dp_image_0/102-0509494-6433739?%5Fencoding=UTF8&amp;n=507846&amp;s=books" target="AmazonHelp"><img id="prodImage" height="240" alt="Object-Oriented Game Development" src="http://ec1.images-amazon.com/images/P/032117660X.01._AA240_SCLZZZZZZZ_.jpg" width="240" border="0"/></a></p>
<p>面向对象的游戏开发，个人认为很不错的书。<br/>如果你已经写过很多代码并感觉一切不过如此，那么，可以读它了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/03/24/790661.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Video Object Cut and Paste</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/03/24/790641.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/03/24/790641.aspx#comments</comments>
		<pubDate>Fri, 24 Mar 2006 08:05:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[PAPERS]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/03/24/790641.aspx</guid>
		<description><![CDATA[<p>MSRA的论文,一个交互系统的实现。</p><p>效果看起来很不错。</p><p>论文看起来好像是个算法集成？系统还是要求不小的用户工作？</p>]]></description>
			<content:encoded><![CDATA[<p>MSRA的论文,一个交互系统的实现。</p>
<p>效果看起来很不错。</p>
<p>论文看起来好像是个算法集成？系统还是要求不小的用户工作？</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/03/24/790641.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AI for game developers</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/03/23/788842.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/03/23/788842.aspx#comments</comments>
		<pubDate>Thu, 23 Mar 2006 07:53:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[BOOKS]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/03/23/788842.aspx</guid>
		<description><![CDATA[<p><a href="http://www.oreilly.com/catalog/ai/index.html"><img alt="AI for Game Developers" src="http://www.oreilly.com/catalog/covers/ai.s.gif" border="0"/></a></p><p>很好读，GAME AI 入门，推荐</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oreilly.com/catalog/ai/index.html"><img alt="AI for Game Developers" src="http://www.oreilly.com/catalog/covers/ai.s.gif" border="0"/></a></p>
<p>很好读，GAME AI 入门，推荐</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/03/23/788842.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[DirectX9 User Interfaces Design and Implementation][EN] .pdf</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/03/20/776725.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/03/20/776725.aspx#comments</comments>
		<pubDate>Mon, 20 Mar 2006 01:47:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[BOOKS]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/03/20/776725.aspx</guid>
		<description><![CDATA[没有搞到此书光盘，搜了一下，发现Amazon上关于此书的评论似乎不怎么样，都说光盘内容和书上的代码不一致，也就不找了。书中控件的类层次非常简单，而且与DX紧密耦合，Amazon上也有人说代码有版本问题。就这样吧。]]></description>
			<content:encoded><![CDATA[<p>没有搞到此书光盘，搜了一下，发现Amazon上关于此书的评论似乎不怎么样，都说光盘内容和书上的代码不一致，也就不找了。</p>
<p>书中控件的类层次非常简单，而且与DX紧密耦合，Amazon上也有人说代码有版本问题。</p>
<p>就这样吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/03/20/776725.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blue Screen Matting</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/03/15/769964.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/03/15/769964.aspx#comments</comments>
		<pubDate>Wed, 15 Mar 2006 12:48:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[PAPERS]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/03/15/769964.aspx</guid>
		<description><![CDATA[ms 比较麻烦，看了大部分 ，又ms没什么]]></description>
			<content:encoded><![CDATA[<p>ms 比较麻烦，看了大部分 ，又ms没什么</p>
</p>
<p>2006.3.19<br/>ps 后面一些math有点烦人呀</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/03/15/769964.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overview of the MPEG-7 Standard</title>
		<link>http://blog.donews.com/fallhunter/archive/2006/03/14/768065.aspx</link>
		<comments>http://blog.donews.com/fallhunter/archive/2006/03/14/768065.aspx#comments</comments>
		<pubDate>Tue, 14 Mar 2006 12:07:00 +0000</pubDate>
		<dc:creator>fallhunter</dc:creator>
				<category><![CDATA[PAPERS]]></category>

		<guid isPermaLink="false">http://blog.donews.com/fallhunter/archive/2006/03/14/768065.aspx</guid>
		<description><![CDATA[Overview of the MPEG-7 Standard.pdfShih-Fu Chang, 2001]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.donews.com/images/blog_donews_com/fallhunter/Overview of the MPEG-7 Standard.pdf">Shih-Fu Chang, 2001 Overview of the MPEG-7 Standard.pdf</a></p>
<p>Sylvie Jeannin and Ajay Divakaran 2001 MPEG-7 Visual Motion Descriptors</p>
<p>Miroslaw Bober MPEG-7 Visual Shape Descriptors 2001</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/fallhunter/archive/2006/03/14/768065.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

