<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>《关于 C++ 中模板类（Template Class）在多文件中的问题》的评论</title>
	<atom:link href="http://www.kissuki.com/2009/04/%e5%85%b3%e4%ba%8e-c-%e4%b8%ad%e6%a8%a1%e6%9d%bf%e7%b1%bb%ef%bc%88template-class%ef%bc%89%e5%9c%a8%e5%a4%9a%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e9%97%ae%e9%a2%98/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kissuki.com/2009/04/%e5%85%b3%e4%ba%8e-c-%e4%b8%ad%e6%a8%a1%e6%9d%bf%e7%b1%bb%ef%bc%88template-class%ef%bc%89%e5%9c%a8%e5%a4%9a%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e9%97%ae%e9%a2%98/</link>
	<description>Linux, Freedom, Arch, Python, Gtk+, C ... Keep It Simple, Stupid!</description>
	<lastBuildDate>Fri, 27 Jan 2012 07:09:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>作者：Michael Genn</title>
		<link>http://www.kissuki.com/2009/04/%e5%85%b3%e4%ba%8e-c-%e4%b8%ad%e6%a8%a1%e6%9d%bf%e7%b1%bb%ef%bc%88template-class%ef%bc%89%e5%9c%a8%e5%a4%9a%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e9%97%ae%e9%a2%98/comment-page-1/#comment-926</link>
		<dc:creator>Michael Genn</dc:creator>
		<pubDate>Thu, 14 Apr 2011 07:05:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.kissuki.com/2009/04/%e5%85%b3%e4%ba%8e-c-%e4%b8%ad%e6%a8%a1%e6%9d%bf%e7%b1%bb%ef%bc%88template-class%ef%bc%89%e5%9c%a8%e5%a4%9a%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e9%97%ae%e9%a2%98/#comment-926</guid>
		<description>准则: C++中的模板类与模板函数都被当作声明(declaration)处理

因为定义一个模板类或模板函数并不能产生实际的代码. 例如
template 
void fft_solve(numeric_type *rdata, numeric_type *idata)
{
......//implementations
}

此时编译器并不会为其产生任何代码. 
而如果你使用了他: double a[...] = {......}, b[...] = {......}; fft_solve(a,b);
编译器会自动为你产生fft_solve(double *rdata, double *idata). 

按照这种处理方法, 把模板函数写入.cpp中, 这个cpp文件也不会作为一个独立的编译单元产生出任何代码. 因为你在别的cpp中使用它, 以这个cpp的眼光看来他对&quot;里面的模板函数被调用&quot;一无所知(不同的cpp作为独立的编译单元处理, 只有链接时才产生关联).</description>
		<content:encoded><![CDATA[<p>准则: C++中的模板类与模板函数都被当作声明(declaration)处理</p>
<p>因为定义一个模板类或模板函数并不能产生实际的代码. 例如<br />
template<br />
void fft_solve(numeric_type *rdata, numeric_type *idata)<br />
{<br />
&#8230;&#8230;//implementations<br />
}</p>
<p>此时编译器并不会为其产生任何代码.<br />
而如果你使用了他: double a[...] = {&#8230;&#8230;}, b[...] = {&#8230;&#8230;}; fft_solve(a,b);<br />
编译器会自动为你产生fft_solve(double *rdata, double *idata). </p>
<p>按照这种处理方法, 把模板函数写入.cpp中, 这个cpp文件也不会作为一个独立的编译单元产生出任何代码. 因为你在别的cpp中使用它, 以这个cpp的眼光看来他对”里面的模板函数被调用”一无所知(不同的cpp作为独立的编译单元处理, 只有链接时才产生关联).</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：离奇</title>
		<link>http://www.kissuki.com/2009/04/%e5%85%b3%e4%ba%8e-c-%e4%b8%ad%e6%a8%a1%e6%9d%bf%e7%b1%bb%ef%bc%88template-class%ef%bc%89%e5%9c%a8%e5%a4%9a%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e9%97%ae%e9%a2%98/comment-page-1/#comment-795</link>
		<dc:creator>离奇</dc:creator>
		<pubDate>Sat, 16 Oct 2010 10:44:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.kissuki.com/2009/04/%e5%85%b3%e4%ba%8e-c-%e4%b8%ad%e6%a8%a1%e6%9d%bf%e7%b1%bb%ef%bc%88template-class%ef%bc%89%e5%9c%a8%e5%a4%9a%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e9%97%ae%e9%a2%98/#comment-795</guid>
		<description>模板是不可以放在 h 文件里的，它是 implementation，不是 declaration</description>
		<content:encoded><![CDATA[<p>模板是不可以放在 h 文件里的，它是 implementation，不是 declaration</p>
]]></content:encoded>
	</item>
</channel>
</rss>

