﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-二流子的空间-随笔分类-C++基础学习</title><link>http://www.cppblog.com/Viking/category/13546.html</link><description>多年来能从孙子变成爷爷，靠的就是一份坚持</description><language>zh-cn</language><lastBuildDate>Thu, 22 Apr 2010 16:44:18 GMT</lastBuildDate><pubDate>Thu, 22 Apr 2010 16:44:18 GMT</pubDate><ttl>60</ttl><item><title>C++模板类</title><link>http://www.cppblog.com/Viking/archive/2010/04/22/113225.html</link><dc:creator>张贵川</dc:creator><author>张贵川</author><pubDate>Wed, 21 Apr 2010 17:01:00 GMT</pubDate><guid>http://www.cppblog.com/Viking/archive/2010/04/22/113225.html</guid><wfw:comment>http://www.cppblog.com/Viking/comments/113225.html</wfw:comment><comments>http://www.cppblog.com/Viking/archive/2010/04/22/113225.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/Viking/comments/commentRss/113225.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Viking/services/trackbacks/113225.html</trackback:ping><description><![CDATA[<p>晚上搞了半天才发现：原来类模板不能分文件写！<br>如：<br>template &lt;class Type&gt;<br>class TNumber<br>{<br>public:<br>&nbsp;~TNumber()<br>&nbsp;{<br>&nbsp;}</p>
<p>&nbsp;void SetItem(Type);<br>&nbsp;Type GetItem();<br>private:<br>&nbsp;Type m_item;<br>};<br><br>写到casual.h中f。而实现文件写入casual.cpp中，那么在main文件中调用时就会提示外部命令无法解析的错误。<br>如：<br>1&gt;main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall TNumber&lt;int&gt;::GetItem(void)" (<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#63;&#71;&#101;&#116;&#73;&#116;&#101;&#109;&#64;&#63;&#36;&#84;&#78;&#117;&#109;&#98;&#101;&#114;&#64;&#72;&#64;&#64;&#81;&#65;&#69;&#72;&#88;&#90;">?GetItem@?$TNumber@H@@QAEHXZ</a>)，该符号在函数 _main 中被引用<br><br>看到一个解释是：<br>因为模板类在编译的时候就相当于宏定义,分两个文件是找不到的。<br><br>解决办法可以：<br>1.类模板定义和实现在同一文件。<br>2.在main文件中连续包含定义文件和实现文件.<br>#include "casual.h"<br>#include "casual.cpp"<br><br>int main()<br>{<br><br>&nbsp;TNumber&lt;int&gt; obj1;<br><br>&nbsp;cout &lt;&lt; obj1.GetItem() &lt;&lt; endl;<br><br>&nbsp;&nbsp; return 0;<br>}<br></p>
<img src ="http://www.cppblog.com/Viking/aggbug/113225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Viking/" target="_blank">张贵川</a> 2010-04-22 01:01 <a href="http://www.cppblog.com/Viking/archive/2010/04/22/113225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++中关于const的一些释义</title><link>http://www.cppblog.com/Viking/archive/2010/04/16/112804.html</link><dc:creator>张贵川</dc:creator><author>张贵川</author><pubDate>Fri, 16 Apr 2010 12:49:00 GMT</pubDate><guid>http://www.cppblog.com/Viking/archive/2010/04/16/112804.html</guid><wfw:comment>http://www.cppblog.com/Viking/comments/112804.html</wfw:comment><comments>http://www.cppblog.com/Viking/archive/2010/04/16/112804.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Viking/comments/commentRss/112804.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Viking/services/trackbacks/112804.html</trackback:ping><description><![CDATA[<p>先解释const 的记忆问题：<br>比如：&nbsp; <br>type&nbsp; const * p;&nbsp;&nbsp;<br>&nbsp;* p 是表示对象， const&nbsp;修饰 *p , &nbsp;就表示常对象。即 *p&nbsp; 对象不可改变。 所以&nbsp; p&nbsp; 不是 常指针，是指向常量的指针。<br>相对于：const type * const * p; 的写法，个人推荐前一种。<br><br>而：<br>type&nbsp;&nbsp;* const p;<br>const 修饰 p， 所以 p&nbsp; 是常量，而* const p 即代表指针常量.&nbsp;&nbsp; p 是常指针。<br><br><br>所以<br>&nbsp;int * &amp; func(C &amp;oC)<br>&nbsp;{<br>&nbsp;&nbsp;return oC.m_p;<br>&nbsp;}<br>表示返回指针的引用<br><br>但没有：<br>&nbsp;int &amp; * func(C &amp;oC)<br>&nbsp;{<br>&nbsp;&nbsp;return oC.m_p;<br>&nbsp;}<br><br>编译器会把 int &amp; *&nbsp; 中的 &amp; 看作取地址符号。<br>如果要对&nbsp; int&nbsp; 型变量进行应用，为没必要这样<br>可以这样写：<br>&nbsp;int&nbsp; &amp; func(C &amp;oC)<br>&nbsp;{<br>&nbsp;&nbsp;return&nbsp; *oC.m_p;<br>&nbsp;}<br><br>同样记忆：<br>常引用对象： type const &amp; Ref ;<br>还要注意const 修饰函数只能是&nbsp; 类成员函数，而不能是全局函数</p>
<img src ="http://www.cppblog.com/Viking/aggbug/112804.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Viking/" target="_blank">张贵川</a> 2010-04-16 20:49 <a href="http://www.cppblog.com/Viking/archive/2010/04/16/112804.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于C++中继承类的拷贝构造函数</title><link>http://www.cppblog.com/Viking/archive/2010/04/16/112799.html</link><dc:creator>张贵川</dc:creator><author>张贵川</author><pubDate>Fri, 16 Apr 2010 12:08:00 GMT</pubDate><guid>http://www.cppblog.com/Viking/archive/2010/04/16/112799.html</guid><wfw:comment>http://www.cppblog.com/Viking/comments/112799.html</wfw:comment><comments>http://www.cppblog.com/Viking/archive/2010/04/16/112799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Viking/comments/commentRss/112799.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Viking/services/trackbacks/112799.html</trackback:ping><description><![CDATA[<p>class CBase<br>{<br>public:<br>&nbsp;CBase(int iNum) : m_iNumber(iNum)<br>&nbsp;{</p>
<p>&nbsp;}<br>&nbsp;CBase(CBase &amp; oBase)<br>&nbsp;{<br>&nbsp;&nbsp;<br>&nbsp;}<br>protected:<br>&nbsp;int m_iNumber;<br>};<br>class B : public CBase<br>{<br>public:<br>&nbsp;B(int iNum, int iNum2) : CBase(iNum), m_iNumber2(iNum2)<br>&nbsp;{<br>&nbsp;}<br>&nbsp;<br>&nbsp;B(B &amp; oB) : CBase(oB.m_iNumber)<br>&nbsp;{<br>&nbsp;&nbsp;m_iNumber2 = oB.m_iNumber2;<br>&nbsp;}</p>
<p>&nbsp;void show()<br>&nbsp;{<br>&nbsp;&nbsp;cout &lt;&lt; m_iNumber &lt;&lt;&nbsp; "&nbsp; " &lt;&lt; m_iNumber2 &lt;&lt; endl;<br>&nbsp;}</p>
<p>private:<br>&nbsp;int m_iNumber2;<br>};<br><br>如果没有 B中的 拷贝构造函数&nbsp; &nbsp;B(B &amp; oB) : CBase(oB.m_iNumber) 后面的初始化CBase(oB.m_iNumber)则会报这样的错误：<br>&nbsp;error C2512: &#8220;CBase&#8221;: 没有合适的默认构造函数可用<br><br>当然以下这样初始化更符合 都是&nbsp; 拷贝构造函数的逻辑：<br>B(B &amp; oB) : CBase(&amp;oB)&nbsp;<br><br><br></p>
<img src ="http://www.cppblog.com/Viking/aggbug/112799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Viking/" target="_blank">张贵川</a> 2010-04-16 20:08 <a href="http://www.cppblog.com/Viking/archive/2010/04/16/112799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>