﻿<?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++博客-为了梦的地方</title><link>http://www.cppblog.com/Cunch/</link><description>不惜奋斗</description><language>zh-cn</language><lastBuildDate>Tue, 07 Apr 2026 12:08:17 GMT</lastBuildDate><pubDate>Tue, 07 Apr 2026 12:08:17 GMT</pubDate><ttl>60</ttl><item><title>Qt反射</title><link>http://www.cppblog.com/Cunch/archive/2013/07/13/201779.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Sat, 13 Jul 2013 14:19:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2013/07/13/201779.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/201779.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2013/07/13/201779.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/201779.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/201779.html</trackback:ping><description><![CDATA[<h2><strong>简介</strong></h2>
<blockquote>
<p>本文主要讲解Qt是如何实现反射，以及一点点反射使用的小心得。</p>
</blockquote>
<h2><strong>文章概览</strong></h2>
<blockquote>
<p> </p>
<h3></h3>
<h5></h5>
<h4></h4>
<h5></h5>
<p>Qt反射内幕小窥</p>
<p>详细内容</p>
<p>反射前期准备</p>
<p>得到注册的类成员变量</p>
<p>得到注册的类成员函数</p>
<p>访问类成员属性（get,set）</p>
<p>调用注册的函数</p>
<p>反射应用</p>
<p>总结</p>
</blockquote>
<h2><strong>Qt反射内幕小窥</strong></h2>
<blockquote>
<p>Qt反射机制是基于moc(meta object compiler)实现的,在这里多插一句（可以说Qt所有C++没有的特性，几乎都和这个有关系）。但是需要注意的是Qt提供的反射式基本的反射，不支持类的反射，这个与Java，C#还是有差别的。</p>
</blockquote>
<h2>moc讲解</h2>
<p> </p>
<p>通常C++的编译过程为</p>
<p>预处理-&gt;编译-&gt;链接-&gt;运行</p>
<p>Qt编译的过程中，有一个moc的过程,在Qt工程构建过程中的qmake其实就是干这个事的。moc-&gt;预处理-&gt;编译-&gt;链接-&gt;运行。</p>
<p>在moc过程中，需要处理的事情如下：</p>
<p>1、 识别一些特殊的宏Q_OBJECT、Q_PROPERTY、Q_INVOKABLE。。。; 如果碰到这些关键字，Qt自然就会去生成对应的moc文件。</p>
<p>2、 slot，signal自然也是如此。</p>
<p>3、 uidesigner，同样也是在这个阶段处理的;</p>
<p> </p>
<h2><strong>详细内容</strong></h2>
<blockquote>
<p>&nbsp;</p>
<h3><strong>反射前期准备</strong></h3>
<p>1、 首先得继承于Q_Object,同时需要在class中加入Q_OBJECT，但是Q_Object的构造函数默认是私有的不让继承。 </p>
<p>在类中直接使用Q_GADGET也可以实现反射，。。。据说只能实现部分功能，目前我只实现到能遍历成员属性，函数，但是不能访问其中的值。 </p>
<p>这个过程其实就是定义QMetaObject的过程，具体见Qt源码 </p>
<p>2、 注册类成员变量需要使用Q_PROPERTY </p>
<p>Q_PROPERTY( type member READ get WRITE set) 其中READ,WRITE是关键字 </p>
<p>Type表示成员的类型（不支持自定义类型，对Qt很多基本类型都支持）; </p>
<p>Member代表你给该成员另外起的名字，可以和变量名不同；get，set就是自己在C++函数里面定义的基本的访问函数名，不需要写参数。直接上代码： </p>
<p>3、 注册类成员函数 </p>
<p>如果你希望这个函数能够被反射，那么很简单，只需要在类的函数声明前加入Q_INVOKABLE关键字。 </p>
<p>例如Q_INVOKABLE int func( QString flag ); </p>
<p> </p>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　<span style="color: #cc6633">#include</span> &lt;QObject&gt;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　<span style="color: #0000ff">class</span> MyClass : <span style="color: #0000ff">public</span> QObject</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　{</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_OBJECT</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_PROPERTY(<span style="color: #0000ff">int</span> Member1 READ Member1 WRITE setMember1 )</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_PROPERTY(<span style="color: #0000ff">int</span> Member2 READ Member2 WRITE setMember2 )</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_PROPERTY(QString MEMBER3 READ Member3 WRITE setMember3 )</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　<span style="color: #0000ff">public</span>:</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 <span style="color: #0000ff">explicit</span> MyClass(QObject *parent = 0);</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　signals:</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　<span style="color: #0000ff">public</span> slots:</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　<span style="color: #0000ff">public</span>:</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_INVOKABLE <span style="color: #0000ff">int</span> Member1();</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_INVOKABLE <span style="color: #0000ff">int</span> Member2();</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_INVOKABLE QString Member3();</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_INVOKABLE <span style="color: #0000ff">void</span> setMember1( <span style="color: #0000ff">int</span> mem1 );</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_INVOKABLE <span style="color: #0000ff">void</span> setMember2( <span style="color: #0000ff">int</span> mem2 );</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_INVOKABLE <span style="color: #0000ff">void</span> setMember3( <span style="color: #0000ff">const</span> QString&amp; mem3 );</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 Q_INVOKABLE <span style="color: #0000ff">int</span> func( QString flag );</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　<span style="color: #0000ff">private</span>:</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 <span style="color: #0000ff">int</span> m_member1;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 <span style="color: #0000ff">int</span> m_member2;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　 QString m_member3;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　　};</pre>
<!--CRLF--></div>
</div>
</blockquote>
<blockquote>
<h3><strong>得到注册的类成员变量</strong></h3>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　MyClass theObj;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> <span style="color: #0000ff">const</span> QMetaObject* metaObj = theObj.metaObject();</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> <span style="color: #008000">//1.遍历类的属性</span></pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> <span style="color: #0000ff">int</span> propertyCnt = metaObj-&gt;propertyCount();</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> <span style="color: #0000ff">for</span> ( <span style="color: #0000ff">int</span> i = 0; i &lt; propertyCnt; ++ i )</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> {</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> QMetaProperty oneProperty = metaObj-&gt;property( i );</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; <span style="color: #006080">" name: "</span> &lt;&lt; oneProperty.name();</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; <span style="color: #006080">" type: "</span> &lt;&lt; QVariant::typeToName( oneProperty.type()) &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　}</pre>
<!--CRLF--></div>
</div>
</blockquote>
<p>主要思路就是得到其元对象，得到其元属性，然后就能得到你需要的信息，具体的访问函数有name,type,需要注意的是得到的type是枚举值，还在Qt提供了typeToName的函数，你可以得到想要的（例如不是空洞的2，而是&#8221;int&#8221;）。</p>
<h3>得到注册的类成员函数</h3>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//2.遍历类的函数成员</span></pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> <span style="color: #0000ff">int</span> methodCnt = metaObj-&gt;methodCount();</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> <span style="color: #0000ff">for</span> ( <span style="color: #0000ff">int</span> idx = 0; idx &lt; methodCnt; ++ idx )</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> {</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> QMetaMethod oneMethod = metaObj-&gt;method( idx );</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; <span style="color: #006080">"--------begin-------"</span> &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; <span style="color: #006080">" typeName: "</span> &lt;&lt; oneMethod.typeName() &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; <span style="color: #006080">" signature: "</span> &lt;&lt; oneMethod.signature() &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; <span style="color: #006080">" methodType: "</span> &lt;&lt; oneMethod.methodType() &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; <span style="color: #006080">"--------end---------"</span> &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　}</pre>
<!--CRLF--></div>
</div>
<p>
</p>
<p>和遍历类属性一致，其实就是根据元对象，得到元函数; </p>
<p>其中typeName代表返回类型，signature只的是函数的原貌，methodType代表函数的类型，在Qt中分为三类（槽，信号，普通函数）。</p>
<h3><strong>访问类成员属性（get,set）</strong></h3>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #008000">//3.使用反射</span></pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; <span style="color: #006080">"-------test property-----------"</span> &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> MyClass newObj;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> newObj.setProperty(<span style="color: #006080">"Member1"</span>, 66);</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; newObj.property( <span style="color: #006080">"Member1"</span> ).toString().toStdString() &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> cout &lt;&lt; newObj.Member1() &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　cout &lt;&lt; <span style="color: #006080">"--------end----------"</span> &lt;&lt; <span style="color: #006080">"\n"</span>;</pre>
<!--CRLF--></div>
</div>
<p>在这里使用的是QObject的property() 和setProperty方法，来访问成员信息。但是对于使用Q_GADGET宏的类，是不能使用这个方法的，还在寻找解决方法，基本思路当然是重写。</p>
<p><strong>调用注册的函数</strong></p>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　<span style="color: #0000ff">int</span> ret;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">　　MyClass newObj;</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> newObj.setMember1( 20 );</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> newObj.setMember2( 50 );</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> QMetaObject::invokeMethod( &amp;newObj, <span style="color: #006080">"func"</span>, Qt::DirectConnection,</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> Q_RETURN_ARG(<span style="color: #0000ff">int</span>, ret ),</pre>
<!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"> Q_ARG(QString, <span style="color: #006080">"+"</span>));</pre>
<!--CRLF--></div>
</div>
<p>
</p>
<p>//普通函数的调用</p>
<p>在MyClass中，我们定义了int func( QString flag );这个函数，利用反射的调用方式如上，主要是理解invokeMethod的用法，其中Qt::DirectConnection是函数的执行方式，分为（异步和同步），Q_RETURN_ARG是返回参数，Q_ARG是传入参数，需要按函数声明中参数的顺序依次传入，Qt最多支持9个参数，对于一般的应用没有问题。还有疑问，请移步具见Qt强大的帮助文档。</p>
<h3><strong>反射的应用</strong></h3>
<p>
</p>
<p>反射反射，就我目前的认知水平来看，通过使用字符串，来实现函数的通用化调用，例如你可以利用反射把很多函数放置到数组中，实现一次遍历，全部调用。</p>
<p>目前我见到的大多是利用反射来操作数据库，例如hibernate，其实可以利用Qt的反射，快速实现所谓的hibernate,(最近自己独立实现了一套，很方便)。</p>
<h2><strong>总结</strong></h2>
<p>这篇文章主要讲了如何使用Qt来实现反射，在实用角度上来讲，我们不需要了解Qt是怎么实现反射的，对于怎么用上面说的很清楚了。大家有什么的新的想法，希望能提出来，来电请咨询<br />
&lt;levard@gmail.com&gt;</p><img src ="http://www.cppblog.com/Cunch/aggbug/201779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2013-07-13 22:19 <a href="http://www.cppblog.com/Cunch/archive/2013/07/13/201779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[面试题1]如何实现不能被继承的C++的类，且能正常使用</title><link>http://www.cppblog.com/Cunch/archive/2013/06/15/201015.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Fri, 14 Jun 2013 16:18:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2013/06/15/201015.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/201015.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2013/06/15/201015.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/201015.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/201015.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p>貌似好久没有自己写过blog了，对于自己这样一个健忘的人，文采又这么差的人来说，正好借这个机会锻炼一下自己的文字能力，同时记录下学过的东西。</p> <p>貌似用过C++也好久了，碰到这个问题，开始确实感觉到无力，最后还是搜索了下别人是怎么做的。据说是Adobe 07年的面试题。</p> <p>&nbsp;</p> <p>1、第一想法大家都是，既然不能被继承，也就是一旦继承这个类之后，类就不能被初始化。</p> <p>2、可能把类的构造函数私有化，和单例有点像，但是这样类就不能正常使用了。</p> <p>3、实在无力，查了下，他们是通过使用虚继承解决这个问题的。</p> <p>对于虚继承，具体资料见：<a href="http://blog.163.com/xiangzaihui@126/blog/static/166955749201182294317243/">http://blog.163.com/xiangzaihui@126/blog/static/166955749201182294317243/</a></p> <p>里面有一句话很重要：<font color="#ff0000">C++规定:把真正创建对象时所指定的类称为是最派生类,虚基类子对象是由最派生类的构造函数通过调用虚基类的构造函数进行初始化的;</font></p> <p><font color="#ff0000"></font>&nbsp;</p> <p>具体实现代码如下：</p> <div id="codeSnippetWrapper"> <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #cc6633">#include</span> &lt;cstdio&gt;</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #cc6633">#include</span> &lt;iostream&gt;</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>&nbsp; </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> <span style="color: #0000ff">template</span>&lt;<span style="color: #0000ff">class</span> T&gt; <span style="color: #0000ff">class</span> CFinal{</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>     <span style="color: #0000ff">friend</span> T;</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>     <span style="color: #0000ff">private</span>:</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>         CFinal(){ std::cout &lt;&lt; <span style="color: #006080">"CFinal()"</span> &lt;&lt; std::endl; }</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>         ~CFinal(){}         </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span> };</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>&nbsp; </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span> <span style="color: #0000ff">class</span> CFoo : <span style="color: #0000ff">virtual</span> <span style="color: #0000ff">public</span> CFinal&lt;CFoo&gt;{</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>     <span style="color: #0000ff">public</span>:</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>         CFoo(){ std::cout &lt;&lt; <span style="color: #006080">"CFoo()"</span> &lt;&lt; std::endl; }</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>         ~CFoo(){}</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span> };</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span>&nbsp; </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum17">  17:</span> <span style="color: #0000ff">class</span> CBar : <span style="color: #0000ff">public</span> CFoo{</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum18">  18:</span>     <span style="color: #0000ff">public</span>:</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum19">  19:</span>        CBar() { std::cout &lt;&lt; <span style="color: #006080">"CBar"</span> &lt;&lt; std::endl; }</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum20">  20:</span> };</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum21">  21:</span>&nbsp; </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum22">  22:</span> <span style="color: #0000ff">int</span> main()</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum23">  23:</span> {</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum24">  24:</span>     <span style="color: #008000">//CBar bar;</span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum25">  25:</span>     CFoo foo;</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum26">  26:</span>     <span style="color: #0000ff">while</span>(1){}</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum27">  27:</span>     <span style="color: #0000ff">return</span> 0;</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum28">  28:</span> }</pre><!--CRLF--></div></div>
<p>当你创建CBar时，需要初始化CFinal，但是你不是他的friend，不能初始化（上面标红）</p>
<p>如果你会问不要virtual行不行？<br />&nbsp;&nbsp;&nbsp; 不行，由于不要virtual，你可以经过CFoo的friend访问到CFinal，但是有virtual就不同了，你必须直接初始化CFinal（这是C++的规定，避免多次初始化）</p>
<p>&nbsp;</p>
<p>但是有个问题，gcc不能编译通过，在friend T出错，vs2010没有问题，希望知道的能给点帮助。</p>
<p>&nbsp;</p>
<p>参考文献：</p>
<p><a href="http://blog.163.com/xiangzaihui@126/blog/static/166955749201182295845689/">http://blog.163.com/xiangzaihui@126/blog/static/166955749201182295845689/</a>（C++实现不能被继承的类）</p><img src ="http://www.cppblog.com/Cunch/aggbug/201015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2013-06-15 00:18 <a href="http://www.cppblog.com/Cunch/archive/2013/06/15/201015.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>十个奇葩网站</title><link>http://www.cppblog.com/Cunch/archive/2013/02/26/198091.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Tue, 26 Feb 2013 11:46:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2013/02/26/198091.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/198091.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2013/02/26/198091.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/198091.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/198091.html</trackback:ping><description><![CDATA[<span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">1、零可售&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//www.linksold.com/" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://www.linksold.<wbr>com/</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">链接出售，将自己掌握的资源转化成收入，譬如你有一份创意作品想卖，譬如你有困难需要帮助，或者你有某个创业但没有资金需要募集资金实现梦想等都可以在这个平台上实现&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">2、这是范儿&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//www.itsfan.com" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://www.itsfan.co<wbr>m</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">-女人一定要有范&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">传播欧美街拍、明星街拍、麻豆街拍、男士街拍、杂志大片美图。~~爱欧美范儿的不可错过。&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">3、稀饭吗&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//www.xifanma.com/" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://www.xifanma.c<wbr>om/</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">精选明星照片，以贴墙式展示，视觉效果非常不错&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">4、邻居的耳朵&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//kxt.fm/" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://kxt.fm/</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">在线听好歌，看美美的文字，喜欢音乐的童鞋可以加下！&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">5、果壳网&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//www.guokr.com/" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://www.guokr.com<wbr>/</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">果壳是我见过很少的坚持以科学，以事实为基础的网站，虽然有时满篇的科学字&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">眼让人很郁闷，但是，比起满眼重复杂乱内容的网站，果壳，是特别的&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">6、几分钟&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//www.jifenzhong.com/" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://www.jifenzhon<wbr>g.com/</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">几分钟可以做什么？汇集大量优质视频，连&#8220;被蚊子咬了如何快速止痒&#8221;都有~&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">很强大！&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">7、下厨房&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//www.xiachufang.com/" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://www.xiachufan<wbr>g.com/</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">其实我很少做菜，但是能把美食网站做的这么漂亮和有序，让人不得不收藏&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">8、TED中文社区&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">TED是社会各界精英交流的盛会，它鼓励各种创新思想的展示、碰撞。&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//tedtochina.com/" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://tedtochina.co<wbr>m/</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">9、一画换一画&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//www.sketchswap.com/" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://www.sketchswa<wbr>p.com/</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">提交自己的涂鸦换另一副画，看着笔画的起落，小小的惊喜&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">10、每日一文&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><a href="http://www.douban.com/link2?url=http%3A//meiriyiwen.com/" target="_blank" rel="nofollow" style="cursor: pointer; color: #666699; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">http://meiriyiwen.co<wbr>m/</a>&nbsp;<br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><span style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;">每天花3分钟看一篇文章，感受阅读的快乐，为简单生活添丝精彩&nbsp;</span><br style="color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; background-color: #ffffff;" /><img src ="http://www.cppblog.com/Cunch/aggbug/198091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2013-02-26 19:46 <a href="http://www.cppblog.com/Cunch/archive/2013/02/26/198091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>算法相关的网址</title><link>http://www.cppblog.com/Cunch/archive/2013/01/09/197148.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Wed, 09 Jan 2013 04:46:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2013/01/09/197148.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/197148.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2013/01/09/197148.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/197148.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/197148.html</trackback:ping><description><![CDATA[<p><a href="http://www.csie.ntnu.edu.tw/~u91029/">http://www.csie.ntnu.edu.tw/~u91029/</a>&nbsp; 台湾的国立师范大学</p> <p><a href="http://www.notonlysuccess.com/">http://www.notonlysuccess.com/</a>&nbsp; 国内搞ACM的</p> <p><a href="http://www.keithschwarz.com/">http://www.keithschwarz.com/</a>&nbsp; 一个老外用STL实现的算法代码</p> <p><a href="http://www.possibility.com/Cpp/CppCodingStandard.html">http://www.possibility.com/Cpp/CppCodingStandard.html</a>&nbsp; CPP代码规范</p> <img src ="http://www.cppblog.com/Cunch/aggbug/197148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2013-01-09 12:46 <a href="http://www.cppblog.com/Cunch/archive/2013/01/09/197148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>曾经的3D资料的网址</title><link>http://www.cppblog.com/Cunch/archive/2013/01/09/197147.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Wed, 09 Jan 2013 04:25:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2013/01/09/197147.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/197147.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2013/01/09/197147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/197147.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/197147.html</trackback:ping><description><![CDATA[<p><a href="http://blog.csdn.net/trcj1/article/details/6163753">http://blog.csdn.net/trcj1/article/details/6163753</a></p> <p><a href="http://blog.sina.com.cn/s/blog_5e6fd4290100nhxa.html">http://blog.sina.com.cn/s/blog_5e6fd4290100nhxa.html</a>&nbsp;</p> <p><a href="http://www.cppblog.com/richardhe/archive/2008/03.html">http://www.cppblog.com/richardhe/archive/2008/03.html</a></p> <p><a href="http://www.cnitblog.com/linghuye/archive/2007/06/24/29007.html">http://www.cnitblog.com/linghuye/archive/2007/06/24/29007.html</a></p> <p>3D游戏资料&nbsp; <a href="http://www.cppblog.com/flyindark/archive/2011/05/01/145475.aspx">http://www.cppblog.com/flyindark/archive/2011/05/01/145475.aspx</a>&nbsp; </p> <p> OGRE <a href="http://blog.sina.com.cn/s/articlelist_1159765812_1_1.html">http://blog.sina.com.cn/s/articlelist_1159765812_1_1.html</a></p> <p><a href="http://www.cppblog.com/lovedday/">http://www.cppblog.com/lovedday/</a>&nbsp; 3D知识</p> <p><a href="http://www.cppblog.com/lai3d/">http://www.cppblog.com/lai3d/</a>&nbsp; </p> <p><a href="http://multi-crash.com/">http://multi-crash.com/</a></p> <p><a href="http://www.cppblog.com/billhsu/">http://www.cppblog.com/billhsu/</a></p> <p>&nbsp;</p> <p>网络编程</p> <p><a href="http://www.cppblog.com/Solstice/archive/2011/04/17/144378.html">http://www.cppblog.com/Solstice/archive/2011/04/17/144378.html</a></p> <img src ="http://www.cppblog.com/Cunch/aggbug/197147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2013-01-09 12:25 <a href="http://www.cppblog.com/Cunch/archive/2013/01/09/197147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2012迟到的总结</title><link>http://www.cppblog.com/Cunch/archive/2013/01/09/197142.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Wed, 09 Jan 2013 03:08:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2013/01/09/197142.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/197142.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2013/01/09/197142.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/197142.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/197142.html</trackback:ping><description><![CDATA[<h1></h1> <blockquote> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font size="3" face="楷体">昨天刚考完试，今天本来是要去实验室的，但是想了想去了又能干啥呢，现在有点小迷茫，感觉自己总是很晕，总是被各种事情牵着鼻子走。今天出去转了转，本来是想到SOHO望京看看的，但是总是找不到，又不想问人，貌似我现在特别怕和别人说话，然后又回来了。一个人在熙熙攘攘的人群中，漫无目的的走着，观察者周围的人，都是为了生活疲于奔命，有刚下班为了回家的上班走，一脸的疲倦，也有为了回家的农民朋友，一看他们就是很节省，貌似还穿着从老家带来的衣服，背着不知道被缝补过多少次的包，但是从他们的脸上绽露出的笑容，一种收获的感觉，一种可以与家人团聚的喜悦，当然还有一帮到处游玩的年轻人，（给我印象很深的是一对情侣，貌似在讨论书的价值，那个女的义正言辞的说：书是承载文化的载体，书本身是没有价值的， 我在想这些话是很有道理，但是与其说这些，还不如好好的看基本书，现在的我们以为信息就是知识，那是错的，接收没有自己的思想的东西，就和吃了被别人嚼烂的食物一样，虽然貌似也能得到点什么，但是没有自己的参与，你还是不知道其中的各种滋味。） 。在地铁上，今天貌似看见两个女生（貌似是学生），一个拿着iphone5（一看就是非主流），但是另外一个女生的眼神给我留下了很深的印象，很大的眼睛，总之就是我喜欢的那种类型，很不好意思的多看了她几眼，貌似被人家发现了，囧囧。。。，还有今天出去给我的感觉，我现在特别不愿意相信别人的话，纵使我知道那是对我好的，我还是希望去撞南墙。</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp; 今天特别惨的是又碰到地铁里面警察查人了，哎我都不想说了每次出去碰见都被查，学生好欺负么还是怎么的，难道我长的象坏人，那个警察凶神扼杀，还揪着我害怕我跑了，查不查是我的自由，我不愿意配合，再说也没犯啥事是吧。。哎这都第三次。。。</font></p></blockquote> <blockquote> <p><font size="3" face="楷体">&nbsp;&nbsp; 2012，对我来说是平平淡淡，貌似也没啥可以说的，都是按预想的来的吧，顺利毕业（虽然毕业设计确实写的很挫），波澜不惊的在本校和北师之间选择了本校，然后就来实验室干活，虽然很苦逼的大概做了4个多月，中途还上课什么的，但是这个过程下来还是有点小收获的，虽然没有很高的收入，但是混口饭吃的钱还是有的，感觉自己在项目中，虽然起了作用，但是还是没有很好的完成自己的任务，主要是自己没有深入进去，做事情的方法确实不对，碰到问题，似乎总是没有很好的办法来解决这个问题，有点像（热锅上的蚂蚁一样），感觉需要抓住影响一个事情所有的因素，枚举来排除每种可能就可以了，但是总是很粗心的漏掉了很多的问题。感觉我们项目中的破窗效应比较严重，比如大家的代码都不是很规范，很多需要改进的地方。研究生的学习，感觉自己一直不在状态，看着大家都在混的态度，我也开始混，貌似我对奖学金的诱惑貌似也没那么强，对成绩也就那样了。貌似这就是这一年做的事情。。。。</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp; 在生活上，认识了一群能朋友，有比我大4岁的大哥，确实和我们不一样，为人处事说话都很到位，这一点确实值得我们学习，给我们讲了很多公司里面的事情，然我再一次的感觉到，技术什么的都是工具，与人交流合作也是很重要的，自己的各方面的能力，表达能力真心得提升一下。还有就是身体，感觉自己越来越不把自己当回事了，真心得注意一下自己的这方面的问题啦，还是就是找个女朋友啊。值得一提是今年爬了些北京的山，什么凤凰岭、香山、蟒山、鹫峰，都爬了下感觉不错啦。</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp; 在技术上，没有学什么新的技术，还是只是熟悉C++，只是学会了简单的QT下的编程，所以未来的一年，我准备对我计算机的基础素养好好提升一下，感觉自己知道的很多东西都飘在上面，没有真心得沉淀下去，今年的感觉是自己理性的一面在减弱。自己弄了很多本书都没有开始看。。。 总是干些没有必要干的事情。。。 感觉自己很多以前会的东西都不会了，好长时间没写blog，感觉好多东西该记录的都没记录。。。</font></p> <p><font size="3" face="楷体"></font>&nbsp;</p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 未来2013年的计划：</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 生活：</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、至少长胖个5斤吧， </font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、爬北京5座山，</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、去郊外走走，如果有时间可以去其他省逛逛。。。 </font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、但愿找个妹子， 至少学会照顾人啊。。。锻炼自己说话的能力啊。。。</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、锻炼身体啦。。。</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 技术：</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0、锻炼自己解决问题的能力；</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、熟悉一门函数型语言，python还是想学下</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、好好读一下《深入计算机系统》，主要需要完成课后的几个实验</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、学习SICP</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、熟悉使用Linux，特别是VIM使用，必要的时候研读下代码</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、数据结构和算法，准备从新来过，没事了参加个topcoder或者codeforces什么的，至少不能太靠后吧</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、建立一个个人的博客</font></p> <p><font size="3" face="楷体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7、至少写一个自己的APP应用，或者写一个网络爬虫相关的东西吧（总是感觉这玩意有点神奇）</font></p></blockquote>  <img src ="http://www.cppblog.com/Cunch/aggbug/197142.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2013-01-09 11:08 <a href="http://www.cppblog.com/Cunch/archive/2013/01/09/197142.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT和Oracle连接的oci驱动的编译</title><link>http://www.cppblog.com/Cunch/archive/2012/05/22/175729.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Tue, 22 May 2012 03:08:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2012/05/22/175729.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/175729.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2012/05/22/175729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/175729.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/175729.html</trackback:ping><description><![CDATA[<p>QT 和 Oracle连接oci驱动的编译  <p><font color="#000000"><strong>一、前提安装</strong></font>  <p>前提：需要安装QT，本介绍安装的是qt-sdk-win-opensource-2010.05.exe；  <p>1、 安装oracle客户端，本介绍里面安装的路径为F:\app\Cunch，记作为ORACELPATH  <p>2、 开始菜单中找到  <p>如上图所示Qt Command Prompt， 在这里QT已经把编译的环境导入，下来我们只需要把工程加载进去；  <p>3、 打开上面的那个控制台，开始设置相关目录  <p><a href="http://www.cppblog.com/images/cppblog_com/Cunch/Windows-Live-Writer/QTOracleoci_9A4E/image_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.cppblog.com/images/cppblog_com/Cunch/Windows-Live-Writer/QTOracleoci_9A4E/image_thumb.png" width="411" height="160"></a>  <p><strong>二、编译</strong>  <p>下面的%ORACLEPATH%需要换成自己安装oracle的相关目录  <p>（1） 设置include目录：  <p>set  <p>INCLUDE=%INCLUDE%;%ORACLEPATH%\product\11.2.0\client_1\oci\include  <p>（2） 设置LIB目录  <p>set LIB=%LIB%;%ORACLEPATH%\product\11.2.0\client_1\oci\lib\msvc  <p>（3） 进入qt中oci的工程目录  <p>cd %QTDIR%\src\plugins\sqldrivers\oci  <p>（4） 开始qmake编译过程，qmake oci.pro  <p>（5） 利用gcc的库进行编译： mingw32-make  <p>这样就编译完成了  <p><a href="http://www.cppblog.com/images/cppblog_com/Cunch/Windows-Live-Writer/QTOracleoci_9A4E/image_4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.cppblog.com/images/cppblog_com/Cunch/Windows-Live-Writer/QTOracleoci_9A4E/image_thumb_1.png" width="640" height="422"></a>  <img src ="http://www.cppblog.com/Cunch/aggbug/175729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2012-05-22 11:08 <a href="http://www.cppblog.com/Cunch/archive/2012/05/22/175729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Enigma decode 可以和支付宝女工程师共进晚餐的机会</title><link>http://www.cppblog.com/Cunch/archive/2012/03/10/167549.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Sat, 10 Mar 2012 05:07:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2012/03/10/167549.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/167549.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2012/03/10/167549.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/167549.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/167549.html</trackback:ping><description><![CDATA[<p>1、原文在<a title="http://club.alipay.com/read-htm-tid-10714525.html" href="http://club.alipay.com/read-htm-tid-10714525.html">http://club.alipay.com/read-htm-tid-10714525.html</a></p> <p>2、mm还是很仁慈的告诉你这是二战的时候的用的密码技术，baidu下就知道enigma，然后google下弄下原理</p> <p>&nbsp;&nbsp;&nbsp;&nbsp; 这个的设计的核心就是转子，而且破译密码的关键就是知道初始的位置，而且mm给了ALI显然就是最开始用的那个3个转子的enigma</p> <p>&nbsp;&nbsp;&nbsp;&nbsp; 唯一让我纠结的就是每个转子的映射表；其实知道不知道都没有关系啦(让我浪费了很多时间)</p> <p>3、下面讲下破解方法：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp; 1、手动破解（也是mm最希望的，mm希望看到你的诚意啊，不过确实很累啊）：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用Paper Enigma Machine，利用纸自制一个Enigma Machine 这个是老外弄的确实很赞啊， 只需一张A4纸</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 具体参考请看：<a title="http://mckoss.com/Crypto/Enigma.htm" href="http://mckoss.com/Crypto/Enigma.htm">http://mckoss.com/Crypto/Enigma.htm</a>&nbsp;&nbsp; 上面提供了 原理和下载链接</p> <p>&nbsp;&nbsp;&nbsp;&nbsp; 2、程序破解： 其实上面的那个网上也是有的（web版）<a title="http://startpad.googlecode.com/hg/labs/js/enigma/enigma-sim.html" href="http://startpad.googlecode.com/hg/labs/js/enigma/enigma-sim.html">http://startpad.googlecode.com/hg/labs/js/enigma/enigma-sim.html</a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp; 3、破解的时候碰到困难网上搜索到的（赞这位朋友）：3大必备工具</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、<a title="http://baike.baidu.com/view/15482.htm" href="http://baike.baidu.com/view/15482.htm">http://baike.baidu.com/view/15482.htm</a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、<a title="http://blog.renren.com/share/235993462/1219448923" href="http://blog.renren.com/share/235993462/1219448923">http://blog.renren.com/share/235993462/1219448923</a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、<a title="http://enigmaco.de/enigma/enigma.html" href="http://enigmaco.de/enigma/enigma.html">http://enigmaco.de/enigma/enigma.html</a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp; </p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、我破解碰到的难处是ALI用完了后，得到的明文里面有welcome这个单词，还有一堆的YYYYYY，我相信我破解对了，但是没有想到</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用AZ BY这个关键的地方 哎哎。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、接下来就是用第二条映射表的提示信息，把空格 ；等显示出来</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、破解完了竟然只有个weibo账号啊，郁闷啊，进去已经别无数的gg给强了先啊</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7、希望大家破解愉快啊</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8、晒下自己的破解工具</p> <p>&nbsp;&nbsp;&nbsp;&nbsp; 9、当然大家也可以写程序啊，本行啊</p> <p>&nbsp;&nbsp;&nbsp; <a href="http://www.cppblog.com/images/cppblog_com/Cunch/Windows-Live-Writer/Enigma_B280/20120310463_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="20120310463" alt="20120310463" src="http://www.cppblog.com/images/cppblog_com/Cunch/Windows-Live-Writer/Enigma_B280/20120310463_thumb.jpg" height="463" border="0" width="644" /></a></p><img src ="http://www.cppblog.com/Cunch/aggbug/167549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2012-03-10 13:07 <a href="http://www.cppblog.com/Cunch/archive/2012/03/10/167549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>可悲的人情人节，找工作求助</title><link>http://www.cppblog.com/Cunch/archive/2012/02/14/165588.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Tue, 14 Feb 2012 12:35:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2012/02/14/165588.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/165588.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2012/02/14/165588.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/165588.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/165588.html</trackback:ping><description><![CDATA[<blockquote>  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本人大四 211本科， 专业是数字媒体专业，有一年C++项目的经验，做过的项目主要是3D游戏相关的。 同时有在西山居实习经历，后由于考研没有继续。希望找一个工作，主要是做C++方向,能保证全职。不知道为啥根据bbs.gameres.com上的招聘信息，在网上投几个简历，只有一个给了面试（在明天）； 为了给自己多留下后路，希望各位前辈们，如果贵公司有合适的职位的话，希望能留下贵公司的招聘邮箱。&nbsp; 谢谢各位了。 不胜感激！！！&nbsp; 可悲的情人节还在找工作。。。。</p></blockquote><img src ="http://www.cppblog.com/Cunch/aggbug/165588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2012-02-14 20:35 <a href="http://www.cppblog.com/Cunch/archive/2012/02/14/165588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2012考研总结</title><link>http://www.cppblog.com/Cunch/archive/2012/01/10/163928.html</link><dc:creator>Cunch</dc:creator><author>Cunch</author><pubDate>Tue, 10 Jan 2012 03:55:00 GMT</pubDate><guid>http://www.cppblog.com/Cunch/archive/2012/01/10/163928.html</guid><wfw:comment>http://www.cppblog.com/Cunch/comments/163928.html</wfw:comment><comments>http://www.cppblog.com/Cunch/archive/2012/01/10/163928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Cunch/comments/commentRss/163928.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Cunch/services/trackbacks/163928.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下决心考研：一直在考研与工作之间犹豫，于是暑假就去实习了一个月，在哪里见了很多的研究生，感觉自己的学历很低啊，于是就决定考研了。我是这么想的考研的话肯定是不读交大了，确实是想换个环境，于是就选择了北航（既不是很高也不是很低的学校，同时还是小跨专业）。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 考研的过程：对我来说考研就是3个半月，其中还有几天休息的，其实也就是3个月吧，自我感觉数学还行，但是我太粗心容易算错，专业和英语我是一开始就复习了，政治我放到了考前50天吧。由于没有固定的座位，就这样每天背个包去打游击。到最后感觉自己准备了80%吧，也许更少。不过让我对自己的专业有了更深的了解。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 考研的那两天：总的来说还是不错的，晚上在宿舍，中午就到我同学那去，还有同学的热情款待。不过这两天的睡眠还是很不错的，和高考比好多了。</p> <p>详细经过吧： 1.7号，早晨6:30的闹铃响了，但我7:00才的爬了起来，我舍友上班提前出去了，给我发了个短信说下雪了，我还是很喜欢雪的（幸好冬天没雨啊），我回复了一句&#8220;瑞雪兆丰年&#8221;，我的信心有来了一倍啊。接下来各种爽啊：首先走到公交站台，438就到了，一个箭步迈上去，20分钟到北航。由于提前查了考场，找到了最优的路线，所以还是很轻松的找到了 教授，我竟然在第二考场（这辈子与二太有缘了，小学 初中 高中 大学 都是带的二班，没想到这次又是二），以为和交大一样是那种30人的考场，没想到是那种110人的，还是在北航的主楼的一个古老的报告厅（看样子是刚建校的那会，苏联模式的），在这样充满历史的气息的地方，我感觉太好了。第一天政治，英语感觉不错啊，英语一看乐观和悲观，我想了会想了个乔布斯的例子，感觉不错，考完回望了北航，感觉人生会从这里改写似的。第二天数学感觉打的不错，但是会错很多，专业课感觉答的很挫啊。感觉考不上的可能性大了。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 总结：这次考研是人生的一次磨练吧，得大于失，成功不仅仅是一个证书吧。</p> <img src ="http://www.cppblog.com/Cunch/aggbug/163928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Cunch/" target="_blank">Cunch</a> 2012-01-10 11:55 <a href="http://www.cppblog.com/Cunch/archive/2012/01/10/163928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>