锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲愉拍自拍另类高清精品,欧美精品性视频,欧美专区一区二区三区http://www.shnenglu.com/vczh/archive/2014/03/01/205998.html闄堟鐎?vczh)闄堟鐎?vczh)Fri, 28 Feb 2014 16:34:00 GMThttp://www.shnenglu.com/vczh/archive/2014/03/01/205998.htmlhttp://www.shnenglu.com/vczh/comments/205998.htmlhttp://www.shnenglu.com/vczh/archive/2014/03/01/205998.html#Feedback1http://www.shnenglu.com/vczh/comments/commentRss/205998.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/205998.html鏈榪戝涔燙++11鐨剉ariadic template argument錛岀粓浜庡彲浠ユ憜鑴辯敤fpmacro妯℃澘鏉ュ鍒朵竴澶у爢浠g爜鐨勫仛娉曚簡錛屽ソ寮蹇冦傝繖涓緥瀛愮殑main鍑芥暟鐢╨ambda鍐欎簡涓涓枑娉㈤偅濂戞暟鍒楃殑閫掑綊璁$畻鍑芥暟銆傝窡浠ュ線涓嶅悓鐨勬槸錛屽湪Y鍑芥暟鐨勫府鍔╀笅錛岃繖涓猯ambda琛ㄨ揪鏄彲浠ユ垚鍔熺湅鍒拌嚜宸憋紝鐒跺悗閫掑綊璋冪敤銆傚綋鐒惰繖浠嶇劧闇瑕佺敤鏅氱殑C++閫掑綊鏉ュ疄鐜幫紝騫朵笉鏄?calculus閭d釜楂樺ぇ涓婄殑Y Combinator銆?

#include <functional>

#include <memory>

#include <iostream>

#include <string>

using namespace std;

template<typename TResult, typename ...TArgs>

class YBuilder

{

private:

聽聽聽聽function<TResult(function<TResult(TArgs...)>, TArgs...)> partialLambda;

public:

聽聽聽聽YBuilder(function<TResult(function<TResult(TArgs...)>, TArgs...)> _partialLambda)

聽聽聽聽聽聽聽聽:partialLambda(_partialLambda)

聽聽聽聽{

聽聽聽聽}

聽聽聽聽TResult operator()(TArgs ...args)const

聽聽聽聽{

聽聽聽聽聽聽聽聽return partialLambda(

聽聽聽聽聽聽聽聽聽聽聽聽[this](TArgs ...args)

聽聽聽聽聽聽聽聽聽聽聽聽{

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return this->operator()(args...);

聽聽聽聽聽聽聽聽聽聽聽聽}, args...);

聽聽聽聽}

};

template<typename TMethod>

struct PartialLambdaTypeRetriver

{

聽聽聽聽typedef void FunctionType;

聽聽聽聽typedef void LambdaType;

聽聽聽聽typedef void YBuilderType;

};

template<typename TClass, typename TResult, typename ...TArgs>

struct PartialLambdaTypeRetriver<TResult(__thiscall TClass::*)(function<TResult(TArgs...)>, TArgs...)>

{

聽聽聽聽typedef TResult FunctionType(TArgs...);

聽聽聽聽typedef TResult LambdaType(function<TResult(TArgs...)>, TArgs...);

聽聽聽聽typedef YBuilder<TResult, TArgs...> YBuilderType;

};

template<typename TClass, typename TResult, typename ...TArgs>

struct PartialLambdaTypeRetriver<TResult(__thiscall TClass::*)(function<TResult(TArgs...)>, TArgs...)const>

{

聽聽聽聽typedef TResult FunctionType(TArgs...);

聽聽聽聽typedef TResult LambdaType(function<TResult(TArgs...)>, TArgs...);

聽聽聽聽typedef YBuilder<TResult, TArgs...> YBuilderType;

};

template<typename TLambda>

function<typename PartialLambdaTypeRetriver<decltype(&TLambda::operator())>::FunctionType> Y(TLambda partialLambda)

{

聽聽聽聽return typename PartialLambdaTypeRetriver<decltype(&TLambda::operator())>::YBuilderType(partialLambda);

}

int _tmain(int argc, _TCHAR* argv[])

{

聽聽聽聽auto fib = Y([](function<int(int)> self, int index)

聽聽聽聽{

聽聽聽聽聽聽聽聽return index<2

聽聽聽聽聽聽聽聽聽聽聽聽?1

聽聽聽聽聽聽聽聽聽聽聽聽:self(index-1)+self(index-2);

聽聽聽聽});

聽聽聽聽for (int i = 0; i < 10; i++)

聽聽聽聽{

聽聽聽聽聽聽聽聽cout << fib(i) << " ";

聽聽聽聽}

聽聽聽聽cout << endl;

}



闄堟鐎?vczh) 2014-03-01 00:34 鍙戣〃璇勮
]]>
C++瀹炵敤鎶宸т箣閰嶇疆Visual C++鐨勮皟璇曞櫒鏄劇ず鏁版嵁緇撴瀯鐨勬牸寮忥紙闄刅czh Library++閰嶇疆鏂囦歡錛?/title><link>http://www.shnenglu.com/vczh/archive/2013/03/21/198665.html</link><dc:creator>闄堟鐎?vczh)</dc:creator><author>闄堟鐎?vczh)</author><pubDate>Thu, 21 Mar 2013 03:55:00 GMT</pubDate><guid>http://www.shnenglu.com/vczh/archive/2013/03/21/198665.html</guid><wfw:comment>http://www.shnenglu.com/vczh/comments/198665.html</wfw:comment><comments>http://www.shnenglu.com/vczh/archive/2013/03/21/198665.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/vczh/comments/commentRss/198665.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/vczh/services/trackbacks/198665.html</trackback:ping><description><![CDATA[<p>浠婂ぉ鎴戝啓浜嗕竴涓粰Visual C++鐢ㄧ殑閰嶇疆錛岀敤鏉ヨVC++鍦ㄦ樉紺鴻嚜宸卞啓鐨勫瓧絎︿覆鍜屽鍣ㄧ瓑璁炬柦鍙樺緱璺熸樉紺篠TL涓鏍鋒紓浜俈C++鐨勫彲閰嶇疆鍨嬭繕鏄緢楂樼殑錛屾垜浠彧瑕佸啓涓涓獂ml錛屽氨鍙互鏀瑰彉璋冭瘯鍣ㄥ鑷繁鐨勬暟鎹粨鏋勭殑鏄劇ず浜?</p> <p>鍦ㄨ繖閲屾垜綆鍗曞湴浠嬬粛涓涓嬬敤娉曘傚亣璁懼ぇ瀹惰寰梫lpp錛圴czh Library++錛屼篃灝辨槸GacUI鐢ㄧ殑閭d釜搴擄級鐨刉String鍟奓ist榪欎簺涓滆タ鍦ㄨ皟璇曞櫒閲岄潰鏄劇ず鍑烘潵鐨勪笢瑗垮お涓戯紝灝卞彲浠ョ敤浠ヤ笅涓夋鏉ヤ慨鏀瑰畠銆?/p> <p>1錛氬幓<a title="http://gac.codeplex.com/SourceControl/changeset/view/99419#2395529" >http://gac.codeplex.com/SourceControl/changeset/view/99419#2395529</a>涓嬭澆鎴戝啓鐨勯偅涓猲atvis鏂囦歡銆傝繖涓枃浠跺湪鏁翠釜zip鍖呴噷闈㈢殑浣嶇疆鏄疌ommon\vlpp.natvis<br />2錛氭妸榪欎釜鏂囦歡澶嶅埗鍒癈:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers錛堝鏋滀嬌鐢ㄩ粯璁ゅ畨瑁呰礬寰勭殑璇濓級<br />3錛氶噸鍚綘鏈鍠滅埍鐨刅isual Studio 2012錛屽氨鍙互鐪嬪埌涓嬮潰鐨勪笢瑗夸簡錛?/p> <p><a href="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_2.png"><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="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_thumb.png" width="275" height="95" /></a><br />絀虹殑鏅鴻兘鎸囬拡</p> <p><a href="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_4.png"><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="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_thumb_1.png" width="433" height="115" /></a><br />鏈変笢瑗跨殑鏅鴻兘鎸囬拡</p> <p><a href="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_6.png"><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="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_thumb_2.png" width="224" height="64" /></a><br />鏈夊唴瀹圭殑“鎯版ц綆?#8221;綾?/p> <p><a href="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_8.png"><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="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_thumb_3.png" width="344" height="88" /></a><br />鏈夊唴瀹逛絾鏄繕娌¤綆楃殑“鎯版ц綆?#8221;綾?/p> <p><a href="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_10.png"><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="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_thumb_4.png" width="353" height="83" /></a><br />娌″唴瀹圭殑“鎯版ц綆?#8221;綾?/p> <p><a href="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_12.png"><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="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_thumb_5.png" width="445" height="259" /></a><br />鏂伴矞鐑荊鐨勫鍣?/p> <p><a href="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_14.png"><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="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_thumb_6.png" width="667" height="226" /></a><br />鏂伴矞鐑荊鐨勬槧灝?/p> <p><a href="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_16.png"><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="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_thumb_7.png" width="596" height="295" /></a><br />灝辮繛涓瀵瑰鐨勬槧灝勪篃鏄姝ょ殑鏂伴矞鐑荊</p> <p><a href="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_18.png"><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="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/vczh/Windows-Live-Writer/51783bf28f3a_A413/image_thumb_8.png" width="318" height="161" /></a><br />List<Nullable<vint>>鐨勪簰鐩稿祵濂椾篃鏄姝ょ殑瀹岀編</p> <p>濡傛灉澶у鎯沖啓鑷繁鐨凜ustomized Visualizer鐨勮瘽錛屽彲浠ュ幓鍙傝冨井杞壇蹇冩彁渚涚殑鏂囨。<a title="http://msdn.microsoft.com/en-us/library/vstudio/jj620914.aspx" >http://msdn.microsoft.com/en-us/library/vstudio/jj620914.aspx</a>錛岀劧鍚庢寜鐓т笂闈㈢殑姝ラ鍐欒嚜宸辯殑natvis鏂囦歡銆傚湪榪欓噷鎴戞妸鎴戠殑natvis璐翠笂鏉ワ紝浠ヤ緵鍙傝冿細</p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 5px; background-color: #f5f5f5; padding-left: 5px; padding-right: 5px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 5px" class="cnblogs_code"><pre><span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="utf-8"</span><span style="color: #0000ff">?></span> <span style="color: #0000ff"><</span><span style="color: #800000">AutoVisualizer </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Type </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::ObjectString&lt;wchar_t&gt;"</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span>{{ size={length}, buffer={buffer+start,su} }}<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">StringView</span><span style="color: #0000ff">></span>buffer+start,su<span style="color: #0000ff"></</span><span style="color: #800000">StringView</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Item </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="[size]"</span><span style="color: #0000ff">></span>length<span style="color: #0000ff"></</span><span style="color: #800000">Item</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">ArrayItems</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Size</span><span style="color: #0000ff">></span>length<span style="color: #0000ff"></</span><span style="color: #800000">Size</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">ValuePointer</span><span style="color: #0000ff">></span>buffer+start<span style="color: #0000ff"></</span><span style="color: #800000">ValuePointer</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">ArrayItems</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Type</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Type </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::ObjectString&lt;char&gt;"</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span>{{ size={length}, buffer={buffer+start,s} }}<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">StringView</span><span style="color: #0000ff">></span>buffer+start,s<span style="color: #0000ff"></</span><span style="color: #800000">StringView</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Item </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="[size]"</span><span style="color: #0000ff">></span>length<span style="color: #0000ff"></</span><span style="color: #800000">Item</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">ArrayItems</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Size</span><span style="color: #0000ff">></span>length<span style="color: #0000ff"></</span><span style="color: #800000">Size</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">ValuePointer</span><span style="color: #0000ff">></span>buffer+start<span style="color: #0000ff"></</span><span style="color: #800000">ValuePointer</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">ArrayItems</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Type</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Type </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::collections::List&lt;*,*&gt;"</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">AlternativeType </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::collections::SortedList&lt;*,*&gt;"</span><span style="color: #0000ff">/></span> <span style="color: #0000ff"><</span><span style="color: #800000">AlternativeType </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::collections::Array&lt;*,*&gt;"</span><span style="color: #0000ff">/></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span>{{ size={count} }}<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Item </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="[size]"</span><span style="color: #0000ff">></span>count<span style="color: #0000ff"></</span><span style="color: #800000">Item</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">ArrayItems</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Size</span><span style="color: #0000ff">></span>count<span style="color: #0000ff"></</span><span style="color: #800000">Size</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">ValuePointer</span><span style="color: #0000ff">></span>buffer<span style="color: #0000ff"></</span><span style="color: #800000">ValuePointer</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">ArrayItems</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Type</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Type </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::collections::Dictionary&lt;*,*,*,*&gt;"</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">AlternativeType </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::collections::Group&lt;*,*,*,*&gt;"</span><span style="color: #0000ff">/></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span>{{ size={keys.count} }}<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Item </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="[size]"</span><span style="color: #0000ff">></span>keys.count<span style="color: #0000ff"></</span><span style="color: #800000">Item</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Item </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="Keys"</span><span style="color: #0000ff">></span>keys<span style="color: #0000ff"></</span><span style="color: #800000">Item</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Item </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="Values"</span><span style="color: #0000ff">></span>values<span style="color: #0000ff"></</span><span style="color: #800000">Item</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Type</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Type </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::Ptr&lt;*&gt;"</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">AlternativeType </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::ComPtr&lt;*&gt;"</span><span style="color: #0000ff">/></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="reference == 0"</span><span style="color: #0000ff">></span>[empty]<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="reference != 0"</span><span style="color: #0000ff">></span>{*reference}<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Item </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="reference != 0"</span><span style="color: #ff0000"> Name</span><span style="color: #0000ff">="[ptr]"</span><span style="color: #0000ff">></span>reference<span style="color: #0000ff"></</span><span style="color: #800000">Item</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Type</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Type </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::Lazy&lt;*&gt;"</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="internalValue.reference == 0"</span><span style="color: #0000ff">></span>[empty]<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="internalValue.reference != 0 &amp;&amp; internalValue.reference->evaluated == false"</span><span style="color: #0000ff">></span>[not evaluated]<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="internalValue.reference != 0 &amp;&amp; internalValue.reference->evaluated == true"</span><span style="color: #0000ff">></span>{internalValue.reference->value}<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Item </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="internalValue.reference != 0 &amp;&amp; internalValue.reference->evaluated == true"</span><span style="color: #ff0000"> Name</span><span style="color: #0000ff">="[value]"</span><span style="color: #0000ff">></span>internalValue.reference->value<span style="color: #0000ff"></</span><span style="color: #800000">Item</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Type</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Type </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::ObjectBox&lt;*&gt;"</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span>{object}<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">ExpandedItem</span><span style="color: #0000ff">></span>object<span style="color: #0000ff"></</span><span style="color: #800000">ExpandedItem</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Type</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Type </span><span style="color: #ff0000">Name</span><span style="color: #0000ff">="vl::Nullable&lt;*&gt;"</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="object == 0"</span><span style="color: #0000ff">></span>[empty]<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">DisplayString </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="object != 0"</span><span style="color: #0000ff">></span>{*object}<span style="color: #0000ff"></</span><span style="color: #800000">DisplayString</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"><</span><span style="color: #800000">ExpandedItem </span><span style="color: #ff0000">Condition</span><span style="color: #0000ff">="object != 0"</span><span style="color: #0000ff">></span>*object<span style="color: #0000ff"></</span><span style="color: #800000">ExpandedItem</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Expand</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">Type</span><span style="color: #0000ff">></span> <span style="color: #0000ff"></</span><span style="color: #800000">AutoVisualizer</span><span style="color: #0000ff">></span></pre></div><img src ="http://www.shnenglu.com/vczh/aggbug/198665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/vczh/" target="_blank">闄堟鐎?vczh)</a> 2013-03-21 11:55 <a href="http://www.shnenglu.com/vczh/archive/2013/03/21/198665.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浣跨敤VisualStudio瀹屾垚鑷姩鍖朇++浠g爜鐢熸垚鍜岀紪璇戝伐浣滐紙GacUI錛?/title><link>http://www.shnenglu.com/vczh/archive/2012/01/14/164167.html</link><dc:creator>闄堟鐎?vczh)</dc:creator><author>闄堟鐎?vczh)</author><pubDate>Sat, 14 Jan 2012 06:09:00 GMT</pubDate><guid>http://www.shnenglu.com/vczh/archive/2012/01/14/164167.html</guid><wfw:comment>http://www.shnenglu.com/vczh/comments/164167.html</wfw:comment><comments>http://www.shnenglu.com/vczh/archive/2012/01/14/164167.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.shnenglu.com/vczh/comments/commentRss/164167.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/vczh/services/trackbacks/164167.html</trackback:ping><description><![CDATA[<div>    GacUI緇堜簬榪涘叆鍒朵綔dll鐨勯樁孌典簡銆傛槰澶╀笂浼犱簡涓涓柊鐨勫伐紼嬶紝鍦?a style="text-decoration: underline" target="_blank">Vczh Library++3.0</a>錛圗:\Codeplex\vlpp\Workspace\Tools\Release\SideProjects\GacUI\GacUI.sln錛夈傝繖閲岄潰涓鍏辨湁涓変釜宸ョ▼錛屾湁涓や釜鏄伐鍏鳳紝涓涓槸dll銆?br /><br />    涓轟簡緙栬瘧鍑哄甫鍙嶅皠鐨勬帶浠跺簱錛屽洜姝ゆ瘡涓涓帶浠墮兘鍙互鑾峰緱涓涓狪TypeDescriptor瀵硅薄銆備絾鏄帶浠跺簱涓鍏辨湁鍑犲崄涓被涓婂崈涓嚱鏁幫紝鎴戜笉鍙兘涓涓竴涓幓瀹炵幇鐨勶紙璇鋒兂鎯沖疄鐜癐Dispatcher鐨勬椂鍊欙級銆傛牴鎹?a style="text-decoration: underline" href="http://www.shnenglu.com/vczh/archive/2012/01/11/164003.html" target="_blank">涓婁竴綃囧崥瀹?/a>璁ㄨ榪囨妧鏈紝鎴戝皢浣跨敤涓涓▼搴忔潵璇籶db鐢熸垚C++浠g爜銆傝緇嗙殑璁″垝濡備笅錛?br /><br />    1錛氬埗浣滀竴涓猒GacPDB宸ョ▼銆傝繖鏄竴涓猠xe錛屼絾鏄槸娌$敤鐨勶紝鍞竴鐨勭敤澶勫氨鏄粬寮曠敤浜咷acUI.dll鎵闇瑕佺殑鎵鏈夋簮浠g爜錛岀劧鍚庨潬緙栬瘧鍣ㄤ駭鐢烶DB鏂囦歡銆?br />    2錛氬埗浣滀竴涓猒TranslatePDBtoXML宸ョ▼銆傝繖鏄竴涓猠xe錛屼粠PDB鎶藉彇綾誨0鏄庛?br />    3錛氬埗浣滀竴涓猒TranslateXMltoCode銆傞【鍚嶆濅箟錛屼笉榪囩幇鍦ㄨ繕娌″仛錛屽師鐞嗘槸涓鏍風殑銆?br />    4錛欸acUI.dll銆傝繖涓猟ll鍖呭惈浜嗘墍鏈夌殑鎺т歡鐨勫疄鐜幫紝榪樻湁_TranslateXMLtoCode浜х敓鐨勬墍鏈変唬鐮併?br /><br />    鐜板湪鎴戠殑鐩爣鏄紝鍏堢紪璇慱Translate*宸ョ▼錛岀劧鍚庣紪璇慱GacPDB浜х敓pdb鍚庤嚜鍔ㄨ皟鐢ㄥ畠浠紝鐢熸垚浠g爜緇撴潫涔嬪悗寮濮嬪悎騫剁紪璇慓acUI.dll銆傛墍鏈夌殑榪欎簺涓滆タ閮介渶瑕佸湪VisualStudio鐨?#8220;Rebuild Solution”閲岄潰瀹屾垚銆備負浜嗗畬鎴愯繖涓洰鏍囷紝鎴戝垱寤鴻繖浜涘伐紼嬩箣鍚庯紝鎸夌収涓嬮潰鐨勬柟娉曚慨鏀逛簡宸ョ▼灞炴э細 <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080"> 1</span> <span style="color: #000000">_TranslatePDBtoXML:<br /></span><span style="color: #008080"> 2</span> <span style="color: #000000">    post build action:<br /></span><span style="color: #008080"> 3</span> <span style="color: #000000">        copy $(ProjectDir)msdia100.dll $(SolutionDir)$(Configuration)\msdia100.dll<br /></span><span style="color: #008080"> 4</span> <span style="color: #000000">_GenPDB:<br /></span><span style="color: #008080"> 5</span> <span style="color: #000000">    references:<br /></span><span style="color: #008080"> 6</span> <span style="color: #000000">        _TranslatePDBtoXML<br /></span><span style="color: #008080"> 7</span> <span style="color: #000000">    post build action:<br /></span><span style="color: #008080"> 8</span> <span style="color: #000000">        $(SolutionDir)$(Configuration)\_TranslatePDBtoXML.exe $(SolutionDir)Debug\_GenPDB.pdb $(SolutionDir)_GenPDB.xml<br /></span><span style="color: #008080"> 9</span> <span style="color: #000000">GacUI:<br /></span><span style="color: #008080">10</span> <span style="color: #000000">    references:<br /></span><span style="color: #008080">11</span> <span style="color: #000000">        _GenPDB</span></div><br />    1錛氬伐紼婣寮曠敤浜嗗伐紼婤鐨勮瘽錛岄偅涔堝彧鏈夊綋B瀹屽叏緙栬瘧濂戒箣鍚庢墠浼氱紪璇慉銆傚洜姝や笂闈㈢殑閰嶇疆灝嗛樆姝笁涓伐紼嬪鉤琛岀紪璇戯紝寮哄埗浠栦滑鎸夌収_TranslatePDBtoXML銆乢GenPDB鍜孏acUI鐨勯『搴忔潵銆?br />    2錛歘TranslatePDBtoXML緙栬瘧濂戒箣鍚庯紝浼氭妸瀹冧緷璧栫殑msdia100.dll澶嶅埗鍒扮紪璇戝嚭鏉ョ殑exe鏃佽竟錛屼互渚涙帴涓嬫潵璋冪敤銆?br />    3錛歘GenPDB緙栬瘧濂戒箣鍚庯紝pdb宸茬粡浜х敓浜嗐傝繖涓椂鍊欏畠浼氳嚜鍔ㄨ皟鐢ㄤ笂涓姝ョ紪璇戝嚭鏉ョ殑_TranslatePDBtoXML錛岃鍙杙db錛岃緭鍑簒ml<br />    4錛氾紙鎺ヤ笅鏉ヨ鍋氱殑錛夎皟鐢╛TranslateXMLtoCode錛岃緭鍏ml錛岃緭鍑篊++浠g爜<br />    5錛氳繖涓椂鍊欙紝鐢熸垚鐨凜++浠g爜宸茬粡灝辯華浜嗭紝鎵浠ュ紑濮嬬紪璇慓acUI銆?br /><br />    闄勫姞鐨勫ソ澶勮繕鏈変竴涓傚洜涓篲GenPDB寮曠敤浜咷acUI鐨刢pp錛屾墍浠ュ綋GacUI鐨勬簮浠g爜淇敼鐨勬椂鍊欙紝_GenPDB涔熶細鎰熷簲鍒幫紝浠庤屽湪涓嬫緙栬瘧GacUI鐨勬椂鍊欏厛寮濮嬬紪璇慱GenPDB銆傚茍涓斿洜涓篏acUI渚濊禆浜哶GenPDB錛屾墍浠GenPDB浠嶇劧浼氬厛緙栬瘧銆傝屼笖榪欑渚濊禆鍏崇郴鏄棤瀹崇殑錛屽洜涓篲GenPDB娌℃湁杈撳嚭lib錛屽洜姝acUI.dll鍦ㄨ繍琛岀殑鏃跺欏畬鍏ㄤ笉闇瑕乢GenPDB.exe鐨勫瓨鍦ㄣ?br /><br />    濂戒簡銆傞偅鎶婁竴涓釜鐨刢pp鏂囦歡娣誨姞鍒癬GenPDB涔熸槸鍦ㄥお楹葷儲浜嗭紝鎵浠ユ垜鎶曟満鍙栧閥浜嗕竴涓嬶細 <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080"> 1</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiApplication.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080"> 2</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiBasicControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080"> 3</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiListControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080"> 4</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiTextControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080"> 5</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiWindowControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080"> 6</span> <span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">---------------------------------------------------------------</span><span style="color: #008000"><br /></span><span style="color: #008080"> 7</span> <span style="color: #008000"></span><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiComboControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080"> 8</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiContainerControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080"> 9</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiListViewControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">10</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiMenuControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">11</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiTextListControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">12</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiTreeViewControls.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">13</span> <span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">---------------------------------------------------------------</span><span style="color: #008000"><br /></span><span style="color: #008080">14</span> <span style="color: #008000"></span><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\Styles\GuiCommonStyles.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">15</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Controls\Styles\GuiWin7Styles.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">16</span> <span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">---------------------------------------------------------------</span><span style="color: #008000"><br /></span><span style="color: #008080">17</span> <span style="color: #008000"></span><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsComposition.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">18</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsElement.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">19</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsEventReceiver.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">20</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsHost.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">21</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsTextElement.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">22</span> <span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">---------------------------------------------------------------</span><span style="color: #008000"><br /></span><span style="color: #008080">23</span> <span style="color: #008000"></span><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\NativeWindow\GuiNativeWindow.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">24</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\NativeWindow\Windows\WinNativeWindow.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">25</span> <span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">---------------------------------------------------------------</span><span style="color: #008000"><br /></span><span style="color: #008080">26</span> <span style="color: #008000"></span><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Candidate\GUI\GUI\Reflection\GuiTypeDescriptor.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">27</span> <span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">---------------------------------------------------------------</span><span style="color: #008000"><br /></span><span style="color: #008080">28</span> <span style="color: #008000"></span><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Library\Basic.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">29</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Library\Exception.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">30</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Library\String.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">31</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Library\Threading.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">32</span> <span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">..\..\..\..\..\Library\Collections\Operation.cpp</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #008080">33</span> <span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">---------------------------------------------------------------</span><span style="color: #008000"><br /></span><span style="color: #008080">34</span> <span style="color: #008000"></span><span style="color: #000000">#include </span><span style="color: #000000"><</span><span style="color: #000000">Windows.h</span><span style="color: #000000">></span><span style="color: #000000"><br /></span><span style="color: #008080">35</span> <span style="color: #000000"><br /></span><span style="color: #008080">36</span> <span style="color: #000000"></span><span style="color: #0000ff">int</span><span style="color: #000000"> CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, </span><span style="color: #0000ff">int</span><span style="color: #000000"> CmdShow)<br /></span><span style="color: #008080">37</span> <span style="color: #000000">{<br /></span><span style="color: #008080">38</span> <span style="color: #000000">    </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">39</span> <span style="color: #000000">}</span></div></div><br />    鍟婂搱鍝堝搱鍝堬紙鎷栬蛋<br /><br />    VisualStudio鐨勫姛鑳芥槸寮哄ぇ鐨勩傚彧瑕佸杽浜庝嬌鐢紝鎴栬呴厤鍚圡SBuild錛屾墍璧峰埌鐨勫▉鍔涘皢姣笉浜氫簬鏌愪簺钁楀悕宸ュ叿閾俱傝屼笖VisualStudio緙栬瘧鍣ㄤ駭鐢熺殑鏂囦歡錛屽熀鏈笂VisualStudio閮芥湁鎻愪緵API渚涗綘闃呰錛屾墍浠ヤ篃鍙互鍋氬緢澶氫簨鎯咃紝璀鎴戣繖綃囨枃绔犺鐨勮繖鏍鳳紝鍏呭綋浜嗕竴涓紪璇戝櫒鐨勬墿灞曪紝鑰屼笖瀹岀編闆嗘垚銆?img src ="http://www.shnenglu.com/vczh/aggbug/164167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/vczh/" target="_blank">闄堟鐎?vczh)</a> 2012-01-14 14:09 <a href="http://www.shnenglu.com/vczh/archive/2012/01/14/164167.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++瀹炵敤鎶宸э紙鍥涳級http://www.shnenglu.com/vczh/archive/2010/06/27/118829.html闄堟鐎?vczh)闄堟鐎?vczh)Sun, 27 Jun 2010 12:19:00 GMThttp://www.shnenglu.com/vczh/archive/2010/06/27/118829.htmlhttp://www.shnenglu.com/vczh/comments/118829.htmlhttp://www.shnenglu.com/vczh/archive/2010/06/27/118829.html#Feedback16http://www.shnenglu.com/vczh/comments/commentRss/118829.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/118829.htmlVczh Library++3.0琚垜鎼炲緱寰堢璋便備負浜嗗紑鍙戠淮鎶ょ殑閬嶅巻銆佸噺灝戠矖蹇冪姱涓嬬殑閿欒浠ュ強澧炲己鍗曞厓嫻嬭瘯銆佸洖褰掓祴璇曞拰嫻嬭瘯宸ュ叿錛屽洜姝よ褰曚笅涓浜涘紑鍙戜笂鐨勫皬鎶宸э紝浠ヤ究鎶涚爾寮曠帀錛岄犵浠栦漢銆傛榪庨珮鎵嬫潵鍠鳳紝鑿滈笩鑶滄嫓銆?br>
    涔嬪墠鐨勬枃绔?/a>璁蹭簡鎸囬拡鍜屽唴瀛樼殑涓浜涢棶棰橈紝浠婂ぉ璇翠竴涓嬪崟鍏冩祴璇曠殑闂銆傚鏋滃湪鍥㈤槦閲岄潰娌℃湁瀵瑰崟鍏冩祴璇曠殑妗嗘灦鏈夎姹傜殑璇濓紝鍏跺疄鎴戜滑鍙互浣跨敤涓涓渶綆鍗曠殑鏂規(guī)硶鏉ユ惌寤哄湪IDE閲岄潰榪愯鐨勫崟鍏冩祴璇曟鏋訛紝鏁翠釜妗嗘灦鍙渶鍗佸嚑琛屼唬鐮併傛垜浠厛鏉ヨ冭檻涓涓嬪姛鑳芥渶灝戠殑鍗曞厓嫻嬭瘯妗嗘灦闇瑕佸畬鎴愪粈涔堟牱鐨勫唴瀹廣傞鍏堟垜浠榪愯涓涓竴涓殑嫻嬭瘯鐢ㄤ緥錛屽叾嬈″湪涓涓祴璇曠敤渚嬮噷闈㈡垜浠媯鏌ヤ竴浜涙潯浠舵槸鍚︽垚绔嬨備婦涓緥瀛愶紝鎴戜滑鍐欎竴涓嚱鏁板皢涓や釜瀛楃涓茶繛鎺ヨ搗鏉ワ紝涓鑸潵璇磋榪涜涓嬮潰鐨勬祴璇曪細
 1 #include "MyUnitTestFramework.h"//絳変竴涓嬫垜浠細灞曠ず涓涓嬪浣曠敤鏈灝戠殑浠g爜瀹屾垚榪欎釜澶存枃浠剁殑鍐呭
 2 #include ""
 3 
 4 TEST_CASE(StringConcat)
 5 {
 6   TEST_ASSERT(concat("a""b")=="ab");
 7   TEST_ASSERT(concat("a""")=="a");
 8   TEST_ASSERT(concat("""b")=="b");
 9   TEST_ASSERT(concat("""")=="");
10   .
11 }
12 
13 int wmain()
14 {
15   return 0;
16 }

    濡傛灉鎴戜滑鐨勫崟鍏冩祴璇曟鏋跺彲浠ヨ繖涔堝啓錛岄偅鏄劇劧鍋氳搗浠涔堜簨鎯呮潵閮戒細鏂逛究寰堝錛岃屼笖涓嶉渶瑕佸悜涓浜涘叾浠栫殑嫻嬭瘯妗嗘灦涓鏍鋒敞鍐屼竴澶у爢涓滆タ錛屾垨鑰呮槸鍐欎竴澶у爢閰嶇疆鍑芥暟銆傚綋鐒惰繖嬈℃垜浠彧鍋氬姛鑳芥渶灝戠殑嫻嬭瘯妗嗘灦錛岃繖涓鏋墮櫎浜嗚繍琛屾祴璇曚互澶栵紝涓嶄細鏈夊叾浠栧姛鑳斤紝璀閫夋嫨鍝簺嫻嬭瘯鍙互榪愯鍟︼紝榪樻槸鍦ㄥ嚭閿欑殑鏃跺檒og涓浜涗粈涔堝暒涔嬬被銆備箣鎵浠ヨ鍦↖DE閲岄潰榪愯錛屾槸鍥犱負鎴戜滑濡傛灉鍋氬埌TEST_ASSERT涓嚭鐜癴alse鐨勮瘽錛岀珛鍒誨湪璇ヨ宕╂簝錛岄偅涔圛DE灝變細甯綘瀹氫綅鍒板嚭閿欑殑TEST_ASSERT涓幓錛岀劧鍚庣粰浣犳樉紺烘墍鏈夌殑涓婁笅鏂囦俊鎭紝璀璇碿allstack鍟︿粈涔堢殑銆傚弸濂界殑宸ュ叿涓嶇敤綆鐩村涓嶈搗鑷繁鍟婏紝騫插悧闈炲緱鎶婂崟鍏冩祴璇曞仛寰楅偅涔堝鏉傛崗錛屽嚒鏄崟鍏冩祴璇曪紝鎬繪槸瑕佸叏閮ㄨ繍琛岄氳繃鎵嶈兘鎻愪氦浠g爜鐨勩?br>
    閭d箞鎴戜滑鏉ョ湅鐪嬩笂闈㈢殑鍗曞厓嫻嬭瘯鐨勪唬鐮併傞鍏堝啓浜員EST_CASE鐨勯偅涓湴鏂癸紝澶ф嫭鍙烽噷闈㈢殑浠g爜浼氳嚜鍔ㄨ繍琛屻傚叾嬈EST_ASSERT浼氬湪琛ㄨ揪寮忔槸false鐨勬椂鍊欏穿婧冦傚厛浠庣畝鍗曠殑鍏ユ墜鍚с傚浣曞埗閫犲穿婧冨憿錛熸渶綆鍗曠殑鍔炴硶灝辨槸鎶涘紓甯革細
1 #define TEST_ASSERT(e) do(if(!(e))throw "浠婃櫄娌¢キ鍚冦?;}while(0)

    榪欓噷闈㈡湁涓や釜瑕佹敞鎰忕殑鍦版柟銆傞鍏坋瑕佸姞涓婂皬鎷彿錛屼笉鐒跺彇鍙嶆搷浣滅灝辨湁鍙兘鍋氬嚭閿欒鐨勮涓恒傝濡傝褰揺鏄痑+b==c鐨勬椂鍊欙紝鍔犱簡灝忔嫭鍙峰氨鍙樻垚if(!(a+b==c))...錛屾病鏈夊姞灝忔嫭鍙峰氨鍙樻垚if(!a+b==c)...錛屾剰鎬濆氨瀹屽叏鍙樹簡銆傜浜屼釜涓繪剰鐨勫湴鏂規(guī)槸鎴戜嬌鐢╠o{...}while(0)鎶婅鍙ュ寘鍥磋搗鏉ヤ簡銆傝繖鏍峰仛鐨勫ソ澶勬槸鍙互鍦ㄤ換浣曟椂鍊橳EST_ASSERT(e)閮藉儚涓涓鍙ャ傝濡傛垜浠彲鑳借繖涔堝啓錛?br>
1 if(a)
2   TEST_ASSERT(x1);
3 else if(b)
4 {
5   TEST_ASSERT(x2);
6   TEST_ASSERT(x3);
7 }

    濡傛灉娌℃湁do{...}while(0)鍖呭洿璧鋒潵錛岃繖涓猠lse灝變細琚粦瀹氬埌瀹忛噷闈㈢殑閭d釜if錛屼綘鐨勪唬鐮佸氨琚伔鍋鋒敼鎺変簡銆?br>
    閭d箞鐜板湪鍓╀笅TEST_CASE(x){y}浜嗐備粈涔堜笢瑗垮彲浠ュ湪main鍑芥暟澶栭潰鑷姩榪愯鍛紵榪欎釜鎴戞兂鐔熸?zhèn)塁++鐨勪漢閮戒細鐭ラ亾錛屽氨鏄叏灞鍙橀噺鐨勬瀯閫犲嚱鏁板暒銆傛墍浠EST_CASE(x){y}閭d釜澶ф嫭鍙烽噷闈㈢殑y鍙兘鍦ㄥ叏灞鍙橀噺鐨勬瀯閫犲嚱鏁伴噷闈㈣皟鐢ㄣ備絾鏄垜浠煡閬撳啓涓涓被鐨勬椂鍊欙紝鏋勯犲嚱鏁扮殑澶ф嫭鍙峰啓瀹屼簡錛屽悗闈㈣繕鏈夌被鐨勫ぇ鎷彿錛屽叏灞鍙橀噺鐨勫悕縐幫紝鍜屾渶緇堢殑涓涓垎鍙楓備負浜嗘妸榪欎簺鍘繪帀錛岄偅涔堟樉鐒秢y}搴旇灞炰簬涓涓櫘閫氱殑鍑芥暟銆傞偅涔堝叏灞鍙橀噺濡備綍鑳藉浣跨敤榪欎釜鍑芥暟鍛紵鏂規(guī)硶寰堢畝鍗曪紝鎶婂嚱鏁板墠緗0鏄庝竴涓嬪氨琛屼簡錛?br>
 1 #define TEST_CASE(NAME)                                            \
 2         extern void TESTCASE_##NAME();                             \
 3         namespace vl_unittest_executors                            \
 4         {                                                          \
 5             class TESTCASE_RUNNER_##NAME                           \
 6             {                                                      \
 7             public:                                                \
 8                 TESTCASE_RUNNER_##NAME()                           \
 9                 {                                                  \
10                     TESTCASE_##NAME();                             \
11                 }                                                  \
12             } TESTCASE_RUNNER_##NAME##_INSTANCE;                   \
13         }                                                          \
14         void TESTCASE_##NAME()

    閭f垜浠潵鐪嬬湅TEST_CASE(x){y}絀剁珶浼氳緲昏瘧鎴愪粈涔堜唬鐮侊細
 1 extern void TESTCASE_x();
 2 namespace vl_unittest_executors
 3 {
 4     class TESTCASE_RUNNER_x
 5     {
 6     public:
 7         TESTCASE_RUNNER_x()
 8         {
 9             TESTCASE_x();
10         }
11     } TESTCASE_RUNNER_x_INSTANCE;
12 }
13 void TESTCASE_x(){y}

    鍒頒簡榪欓噷鏄笉鏄緢娓呮浜嗘崗錛岄鍏堝湪main鍑芥暟榪愯涔嬪墠TESTCASE_RUNNER_x_INSTANCE鍙橀噺浼氬垵濮嬪寲錛岀劧鍚庤皟鐢═ESTCASE_RUNNER_x鐨勬瀯閫犲嚱鏁幫紝鏈鍚庤繍琛屽嚱鏁癟ESTCASE_x錛岃鍑芥暟鐨勫唴瀹規(guī)樉鐒跺氨鏄瘂y}浜嗐傝繖閲岃繕鑳藉鍒板畯鏄浣曡繛鎺ヤ袱涓悕瀛楁垚涓轟竴涓悕瀛楋紝鍜屽浣曞啓澶氳鐨勫畯鐨勩?br>
    浜庢槸MyUnittestFramework.h灝卞寘鍚繖涓や釜瀹忥紝鍏朵粬鍟ラ兘娌℃湁錛屾槸涓嶆槸寰堟柟渚垮憿錛熸墦寮Visual C++錛屽緩绔嬩竴涓伐紼嬶紝寮曠敤榪欎釜澶存枃浠訛紝鐒跺悗鍐欎綘鐨勫崟鍏冩祴璇曪紝鏈鍚嶧5灝辮繍琛屼簡錛屽鏂逛究鍟婏紝鍟婂搱鍝堝搱銆?br>
    榪欓噷闇瑕佹敞鎰忎竴鐐癸紝閭d簺鍗曞厓嫻嬭瘯鐨勯『搴忔槸涓嶅彈鍒頒繚璇佺殑錛岀壒鍒槸浣犱嬌鐢ㄤ簡澶氫釜cpp鏂囦歡鐨勬儏鍐典笅銆備簬鏄綘鍦ㄤ嬌鐢ㄨ繖涓祴璇曟鏋剁殑鍚屾椂錛屼細琚揩淇濊瘉鎵ц涓嬈″崟鍏冩祴璇曚笉浼氬浣犵殑鍏ㄥ眬鐘舵佸甫鏉ヤ粈涔堝壇浣滅敤錛屼互渚夸袱涓祴璇曠敤渚嬩氦鎹㈤『搴忔墽琛岀殑鏃跺欎粛鐒惰兘紼沖畾鍦頒駭鐢熺浉鍚岀殑緇撴灉銆傝繖瀵逛綘鍐欏崟鍏冩祴璇曟湁甯姪錛岃屼笖涓轟簡璁╀綘鐨勪唬鐮佽兘澶熻榪欎箞嫻嬭瘯錛屼綘鐨勪唬鐮佷篃浼氬啓鐨勬湁鏉$悊錛屼笉浼氫緷璧栧叏灞鐘舵侊紝鐪熸槸涓涓句袱寰椾篃銆傝屼笖璇翠笉瀹氬崟鍏冩祴璇曠敤渚嬫瘮浣犵殑鍏ㄥ眬鍙橀噺鐨勫垵濮嬪寲榪樺厛鎵ц鍛紝鍥犳涓轟簡浣跨敤榪欎釜嫻嬭瘯妗嗘灦錛屼綘灝嗕細涓嶅緱涓嶆妸浣犵殑鍏ㄥ眬鍙橀噺闅愯棌鍦ㄤ竴涓猚pp閲岄潰錛岃屾毚闇插嚭闅忔椂鍙互琚皟鐢ㄧ殑涓緇勫嚱鏁板嚭鏉ャ傝繖鏍蜂篃鍙互璁╀綘鐨勪唬鐮佸湪浣跨敤鍏ㄥ眬鐘舵佺殑鏃跺欐洿鍔犲畨鍏ㄣ?br>
    浠婂ぉ灝辮鍒拌繖閲屼簡銆備笅涓綃囪鍐欎粈涔堟垜榪樻病鎯沖ソ錛屽埌鏃跺欏啀璇村惂銆?

闄堟鐎?vczh) 2010-06-27 20:19 鍙戣〃璇勮
]]>
C++瀹炵敤鎶宸э紙涓夛級http://www.shnenglu.com/vczh/archive/2010/06/24/118635.html闄堟鐎?vczh)闄堟鐎?vczh)Thu, 24 Jun 2010 07:03:00 GMThttp://www.shnenglu.com/vczh/archive/2010/06/24/118635.htmlhttp://www.shnenglu.com/vczh/comments/118635.htmlhttp://www.shnenglu.com/vczh/archive/2010/06/24/118635.html#Feedback14http://www.shnenglu.com/vczh/comments/commentRss/118635.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/118635.html    澶嶆潅鐨勪笢瑗垮啓澶氫簡錛屽浠婂啓鐐圭畝鍗曠殑濂戒簡銆傜敱浜庡姛鑳戒笂鐨勯渶瑕侊紝Vczh Library++3.0琚垜鎼炲緱寰堢璋便備負浜嗗紑鍙戠淮鎶ょ殑閬嶅巻銆佸噺灝戠矖蹇冪姱涓嬬殑閿欒浠ュ強澧炲己鍗曞厓嫻嬭瘯銆佸洖褰掓祴璇曞拰嫻嬭瘯宸ュ叿錛屽洜姝よ褰曚笅涓浜涘紑鍙戜笂鐨勫皬鎶宸э紝浠ヤ究鎶涚爾寮曠帀錛岄犵浠栦漢銆傛榪庨珮鎵嬫潵鍠鳳紝鑿滈笩鑶滄嫓銆?br>
    浠婂ぉ鏄叧浜庡唴瀛樼殑鏈鍚庝竴綃囦簡銆?a style="TEXT-DECORATION: underline" href="http://www.shnenglu.com/vczh/archive/2010/06/24/118603.html" target=_blank>涓婁竴綃囨枃绔?/a>璁蹭簡涓轟粈涔堜笉鑳藉涓涓笢瑗塊殢渚縨emset銆傞噷闈㈢殑demo浠g爜鍑轟簡鐐瑰皬bug錛屼笉榪囨垜涓嶅枩嬈㈠湪鍙戞枃绔犵殑鏃跺欓噷闈㈢殑demo浠g爜涔熸嬁鍘葷紪璇戝拰榪愯錛屾墍浠ュぇ瀹舵湁浠涔堝彂鐜扮殑闂灝辮瘎璁哄惂銆傝繖鏍蜂篃渚夸簬鍚庢潵鐨勪漢涓嶄細鍙楀埌璇銆傝繖嬈¤鐨勪粛鐒舵槸鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟鐨勪簨鎯咃紝涓嶈繃鎴戜滑灝嗛氳繃浜叉墜寮鍙戜竴涓櫤鑳芥寚閽堢殑鏂規(guī)硶錛岀煡閬撳紩鐢ㄨ鏁板浣曞府鍔╃鐞嗚祫婧愶紝浠ュ強閿欒浣跨敤寮曠敤璁℃暟鐨勬儏鍐點?br>
    棣栧厛鍏堟潵鐪嬩竴涓嬫櫤鑳芥寚閽堟槸濡備綍甯姪鎴戜滑綆$悊鍐呭瓨鐨勩傜幇鍦ㄦ櫤鑳芥寚閽堢殑瀹炵幇闈炲父澶氾紝鎴戝氨鍋囪榪欎釜綾誨瀷鍙玃tr<T>鍚с傝繖璺烿czh Library++ 3.0鎵浣跨敤鐨勫疄鐜頒竴鏍楓?/p>
 1 class Base
 2 {
 3 public:
 4   virtual ~Base(){}
 5 };
 6 
 7 class Derived1 : public Base
 8 {
 9 };
10 
11 class Derived2 : public Base
12 {
13 };
14 
15 //---------------------------------------
16 
17 List<Ptr<Base>> objects;
18 objects.Add(new Derived1);
19 objects.Add(new Derived2);
20 
21 List<Ptr<Base>> objects2;
22 objects2.Add(objects[0]);

    褰撶劧榪欓噷鐨凩ist涔熸槸Vczh Library++3.0瀹炵幇鐨勶紝涓嶈繃榪欑帺鎰忓効璺焩ector涔熷ソ璺烠#鐨凩ist涔熷ソ閮芥槸涓涓蹇碉紝鍥犳涔熷氨涓嶉渶瑕佸鍔犺В閲婁簡銆傛垜浠彲浠ョ湅鍒版櫤鑳芥寚閽堢殑涓涓ソ澶勶紝鍙娌℃湁寰幆寮曠敤鍑虹幇錛屼綘鏃犺鎬庝箞澶嶅埗瀹冿紝鏈緇堟繪槸鍙互琚瀽鏋勬帀鐨勩傚彟涓涓緥瀛愬憡璇夋垜浠櫤鑳芥寚閽堝浣曞鐞嗙被鍨嬭漿鎹細
1 Ptr<Derived1> d1=new Derived1;
2 Ptr<Base> b=d1;
3 Ptr<Derived2> d2=b.Cast<Derived2>();
4 // d2鏄┖錛屽洜涓篵鎸囧悜鐨勬槸Derived1鑰屼笉鏄疍erived2銆?/span>

    榪欏氨濡傚悓鎴戜滑Derived1*鍙互闅愬紡杞崲鍒癇ase*錛岃屽綋浣犱嬌鐢╠ynamic_cast<Derived2*>(static_cast<Base*>(new Derived1))浼氬緱鍒?涓鏍楓傛櫤鑳芥寚閽堝湪甯姪鎴戜滑鏋愭瀯瀵硅薄鐨勫悓鏃訛紝涔熻鍋氬ソ綾誨瀷杞崲鐨勫伐浣溿?br>
    濂戒簡錛岀幇鍦ㄥ厛璁╂垜浠竴姝ヤ竴姝ュ仛鍑洪偅涓狿tr<T>銆傛垜浠渶瑕佹竻妤氳繖涓櫤鑳芥寚閽堟墍瑕佸疄鐜扮殑鍔熻兘鏄粈涔堬紝鐒跺悗鎴戜滑涓涓竴涓潵鍋氥傞鍏堣鎴戜滑鍒楀嚭涓寮犺〃錛?br>    1銆佹病鏈夊弬鏁版瀯閫犵殑鏃跺欙紝鍒濆鍖栦負絀?br>    2銆佷嬌鐢ㄦ寚閽堟瀯閫犵殑鏃跺欙紝鎷ユ湁閭d釜鎸囬拡錛屽茍涓斿湪娌℃湁浠諱綍鏅鴻兘鎸囬拡鎸囧悜閭d釜鎸囬拡鐨勬椂鍊欏垹闄ゆ帀璇ユ寚閽堛?br>    3銆佹櫤鑳芥寚閽堣繘琛屽鍒剁殑鏃跺欙紝涓や釜鏅鴻兘鎸囬拡鍏卞悓鎷ユ湁璇ュ唴閮ㄦ寚閽堛?br>    4銆佹櫤鑳芥寚閽堝彲浠ヤ嬌鐢ㄦ柊鐨勬櫤鑳芥寚閽堟垨瑁告寚閽堥噸鏂拌祴鍊箋?br>    5銆侀渶瑕佹敮鎸侀殣寮忔寚閽堢被鍨嬭漿鎹紝static_cast涓嶆敮鎸佽宒ynamic_cast鏀寔鐨勮漿鎹㈠垯浣跨敤Cast<T2>()鎴愬憳鍑芥暟鏉ヨВ鍐熾?br>    6銆佸鏋滀竴涓8鎸囬拡鐩存帴鐢ㄦ潵鍒涘緩涓や釜鏅鴻兘鎸囬拡鐨勮瘽錛屾湡鏈涚殑鎯呭喌鏄綋涓や釜鏅鴻兘鎸囬拡鏋愭瀯鎺夌殑鏃跺欙紝璇ユ寚閽堜細琚玠elete涓ゆ浠庤屽穿婧冦?br>    7銆佷笉澶勭悊寰幆寮曠敤銆?br>
    鏈鍚庝袱鐐瑰疄闄呬笂鏄敊璇嬌鐢ㄦ櫤鑳芥寚閽堢殑鏈甯歌鐨勪袱縐嶆儏鍐點傛垜浠粠1鍒?涓涓竴涓疄鐜般傞鍏堟槸1銆傛櫤鑳芥寚閽堝彲浠ラ殣寮忚漿鎹㈡垚bool錛屽彲浠ラ氳繃operator->()鎷垮埌鍐呴儴鐨凾*銆傚湪娌℃湁浣跨敤鍙傛暟鏋勯犵殑鏃跺欙紝闇瑕佽漿鎹㈡垚false錛屼互鍙婃嬁鍒?錛?br>
 1 template<typename T>
 2 class Ptr
 3 {
 4 private:
 5   T* pointer;
 6   int* counter;
 7 
 8   void Increase()
 9   {
10     if(counter)++*counter;
11   }
12 
13   void Decrease()
14   {
15     if(counter && --*counter==0)
16     {
17       delete counter;
18       delete pointer;
19       counter=0;
20       pointer=0;
21     }
22   }
23 
24 public:
25   Ptr():pointer(0),counter(0)
26   {
27   }
28 
29   ~Ptr()
30   {
31     Decrease();
32   }
33 
34   operator bool()const
35   {
36     return counter!=0;
37   }
38 
39   T* operator->()const
40   {
41     return pointer;
42   }
43 };

    鍦ㄨ繖閲屾垜浠疄鐜頒簡鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟銆傛瀯閫犲嚱鏁版妸鍐呴儴鎸囬拡鍜屽紩鐢ㄨ鏁扮殑鎸囬拡閮藉垵濮嬪寲涓虹┖錛岃屾瀽鏋勫嚱鏁板垯榪涜寮曠敤璁℃暟鐨勫噺涓鎿嶄綔銆傚彟澶栦袱涓搷浣滅閲嶈澆寰堝鏄撶悊瑙c傛垜浠富瑕佹潵鐪嬬湅Increase鍑芥暟鍜孌ecrease鍑芥暟閮藉垎鍒仛浜嗕粈涔堛侷ncrease鍑芥暟鍦ㄥ紩鐢ㄨ鏁板瓨鍦ㄧ殑鎯呭喌涓嬶紝鎶婂紩鐢ㄨ鏁板姞涓銆傝孌ecrease鍑芥暟鍦ㄥ紩鐢ㄨ鏁板瓨鍦ㄧ殑鎯呭喌涓嬶紝鎶婂紩鐢ㄨ鏁板噺涓錛屽鏋滃紩鐢ㄨ鏁板湪鍑忎竴榪囩▼涓彉鎴愪簡0錛屽垯鍒犳帀鎷ユ湁鐨勮祫婧愩?br>
    褰撶劧鍒頒簡榪欎釜鏃跺欐櫤鑳芥寚閽堣繕涓嶈兘鐢紝鎴戜滑蹇呴』鏇夸粬鍔犱笂澶嶅埗鏋勯犲嚱鏁幫紝operator=鎿嶄綔絎﹂噸杞戒互鍙婁嬌鐢ㄦ寚閽堣祴鍊肩殑鎯呭喌銆傞鍏堣鎴戜滑鏉ョ湅浣跨敤鎸囬拡璧嬪肩殑璇濇垜浠簲璇ュ姞涓婁粈涔堬細
 1   Ptr(T* p):pointer(0),counter(0)
 2   {
 3     *this=p;
 4   }
 5 
 6   Ptr<T>& operator=(T* p)
 7   {
 8     Decrease();
 9     if(p)
10     {
11       pointer=p;
12       counter=new int(1);
13     }
14     else
15     {
16       pointer=0;
17       counter=0;
18     }
19     return *this;
20   }

    榪欓噷榪樻槸鍋峰伐鍑忔枡浜嗙殑錛屾瀯閫犲嚱鏁版帴鍙椾簡鎸囬拡鐨勮瘽錛岃繕鏄漿緇檕perator=鍘昏皟鐢ㄤ簡銆傚綋涓涓櫤鑳芥寚閽堣涓涓柊鎸囬拡璧嬪肩殑鏃跺欙紝鎴戜滑棣栧厛瑕佸噺鎺変竴涓紩鐢ㄨ鏁幫紝鍥犱負鍘熸潵鐨勬寚閽堝啀涔熶笉琚繖涓櫤鑳芥寚閽堝叡浜簡銆備箣鍚庡氨榪涜鍒ゆ柇錛屽鏋滄潵鐨勬槸0錛岄偅涔堝氨鍙樻垚絀恒傚鏋滀笉鏄?錛屽氨鎷ユ湁璇ユ寚閽堬紝寮曠敤璁℃暟鍒濆鍖栨垚1銆備簬鏄垜浠氨鍙互榪欎箞浣跨敤浜嗭細
1 Ptr<Base> b=new Derived1;
2 Ptr<Derived2> d2=new Derived2;

    璁╂垜浠紑濮嬪鍒朵粬浠惂銆傚鍒剁殑瑕侀鏄紝鍏堟妸涔嬪墠鎷ユ湁鐨勬寚閽堣劚紱繪帀錛岀劧鍚庤繛鎺ュ埌涓涓柊鐨勬櫤鑳芥寚閽堜笂闈㈠幓銆傛垜浠煡閬撻潪絀烘櫤鑳芥寚閽堟湁澶氬皯涓紝鎬葷殑寮曠敤璁℃暟鐨勫拰灝辨槸澶氬皯錛屽彧鏄垎閰嶅埌鍚勪釜鎸囬拡涓婇潰鐨勬暟瀛椾笉涓鏍瘋屽凡錛?br>
 1   Ptr(const Ptr<T>& p):pointer(p.pointer),counter(p.counter)
 2   {
 3     Increase();
 4   }
 5 
 6   Ptr<T>& operator=(const Ptr<T>& p)
 7   {
 8     if(this!=&p)
 9     {
10       Decrease();
11       pointer=p.pointer;
12       counter=p.counter;
13       Increase();
14     }
15     return *this;
16   }

    鍦ㄤ笂涓綃囨枃绔犳湁鏈嬪弸鎸囧嚭閲嶈澆operator=鐨勬椂鍊欓渶瑕佽冭檻鏄笉鏄嚜宸辮祴鍊肩粰鑷繁錛屽叾瀹炶繖鏄緢姝g‘鐨勩傛垜浠啓姣忎竴綾葷殑鏃跺欙紝鐗瑰埆鏄綋綾繪嫢鏈夎嚜宸辨帶鍒剁殑璧勬簮鐨勬椂鍊欙紝闇瑕侀潪甯告敞鎰忚繖浠朵簨鎯呫傚綋鐒跺鏋滃彧鏄鍒跺嚑涓璞¤屼笉浼歯ew鍟奷elete榪樻槸close浠涔坔andle錛岄偅媯鏌ヤ笉媯鏌ヤ篃鏃犳墍璋撲簡銆傚湪榪欓噷鎴戜滑闈炲父娓呮錛屽綋澧炲姞涓涓柊鐨勯潪絀烘櫤鑳芥寚閽堢殑鏃跺欙紝寮曠敤璁℃暟鐨勬誨拰浼氬姞涓銆傚綋淇敼涓涓潪絀烘櫤鑳芥寚閽堢殑緇撴灉涔熸槸闈炵┖鐨勬椂鍊欙紝寮曠敤璁℃暟鐨勫拰淇濇寔涓嶅彉銆傚綋鐒惰繖鏄簲璇ョ殑錛屽洜涓烘垜浠渶瑕佸湪鎵鏈夐潪絀烘櫤鑳芥寚閽堥兘琚瘉鎺夌殑鏃跺欙紝閲婃斁鍙椾繚鎶ょ殑鎵鏈夎祫婧愩?br>
    鍒頒簡榪欓噷涓涓櫤鑳芥寚閽堝熀鏈笂宸茬粡鑳界敤浜嗭紝浣嗘槸榪樹笉鑳藉鐞嗙埗綾誨瓙綾葷殑鎯呭喌銆傝繖涓槸姣旇緝楹葷儲鐨勶紝涓涓狿tr<Derived>浜嬪疄涓婃病鏈夋潈闄愯闂甈tr<Base>鐨勫唴閮ㄥ璞°傚洜姝ゆ垜浠渶瑕侀氳繃鍙嬪厓綾繪潵瑙e喅榪欎釜闂銆傜幇鍦ㄨ鎴戜滑鏉ユ坊鍔犱袱涓柊鐨勫嚱鏁板惂錛屼粠涓涓換鎰忕殑Ptr<C>澶嶅埗鍒癙tr<T>錛岀劧鍚庝繚璇佸彧鏈夊綋C*鍙互闅愬紡杞崲鎴怲*鐨勬椂鍊欑紪璇戣兘澶熼氳繃錛?br>
 1   template<X> friend class Ptr;
 2 
 3   template<typename C>
 4   Ptr(const Ptr<C>& p):pointer(p.pointer),counter(p.counter)
 5   {
 6     Increase();
 7   }
 8 
 9   template<typename C>
10   Ptr<T>& operator=(const Ptr<C>& p)
11   {
12     Decrease();
13     pointer=p.pointer;
14     counter=p.counter;
15     Increase();
16     return *this;
17   }

    娉ㄦ剰榪欓噷鎴戜滑鐨刼perator=騫朵笉鐢ㄦ鏌ユ槸涓嶆槸鑷繁緇欒嚜宸辮祴鍊鹼紝鍥犱負榪欐槸涓や釜涓嶅悓鐨勭被錛岀浉鍚岀殑璇濅細璋冪敤涓婇潰閭d釜operator=鐨勩傚鏋淐*涓嶈兘闅愬紡杞崲鍒癟*鐨勮瘽錛岃繖閲岀殑pointer=p.pointer灝變細澶辮觸錛屼粠鑰屾弧瓚充簡鎴戜滑鐨勮姹傘?br>
    鐜板湪鎴戜滑鑳藉鍋氱殑浜嬫儏灝辨洿澶氫簡錛?br>
1 Ptr<Derived1> d1=new Derived1;
2 Ptr<Base> b=d1;

    浜庢槸鎴戜滑鍙墿涓嬫渶鍚庝竴涓狢ast鍑芥暟浜嗐傝繖涓嚱鏁板唴閮ㄤ嬌鐢╠ynamic_cast鏉ュ仛鍒ゆ柇錛屽鏋滆漿鎹㈠け璐ワ紝浼氳繑鍥炵┖鎸囬拡錛?br>
 1   tempalte<typename C>
 2   Ptr<C> Cast()const
 3   {
 4     C* converted=dynamic_cast<C*>(pointer);
 5     Ptr<C> result;
 6     if(converted)
 7     {
 8       result.pointer=converted;
 9       result.counter=counter;
10       Increase();
11     }
12     return result;
13   }

    榪欐槸涓縐峢ack鐨勬柟娉曪紝騫蟲椂鏄笉榧撳姳鐨?#8230;…涓嶈繃鍥犱負鎿嶄綔鐨勯兘鏄疨tr錛岃屼笖鐗瑰寲Ptr涔熸槸浣跨敤閿欒鐨勪竴縐嶏紝鎵浠ヨ繖閲屽氨涓嶇浜嗐傛垜浠細媯鏌ynamic_cast鐨勭粨鏋滐紝濡傛灉鎴愬姛浜嗭紝閭d箞浼氳繑鍥炰竴涓潪絀虹殑鏂版櫤鑳芥寚閽堬紝鑰屼笖榪欎釜鏃跺欐垜浠篃瑕佽浣廔ncrease涓涓嬨?br>
    濂戒簡錛屽熀鏈姛鑳藉氨瀹屾垚浜嗐傚綋鐒朵竴涓櫤鑳芥寚閽堣繕瑕佸緢澶氬叾浠栧姛鑳斤紝璀璇存瘮杈冧粈涔堢殑錛岃繖涓氨浣犱滑鑷繁鎼炲畾鍝堛?br>
    鎸囬拡鍜屽唴瀛樺氨璇村埌榪欓噷浜嗭紝涓嬩竴綃囪濡備綍鍒╃敤涓涓ソ鐨処DE鏋勯犺交閲忕駭鍗曞厓嫻嬭瘯緋葷粺銆傛垜浠兘璇村ソ鐨勫伐鍏瘋兘澶熸彁楂樼敓浜у姏錛屽洜姝よ繖縐嶆柟娉曚笉鑳借劚紱諱竴涓ソ鐨処DE浣跨敤銆?

闄堟鐎?vczh) 2010-06-24 15:03 鍙戣〃璇勮
]]>
C++瀹炵敤鎶宸э紙浜岋級http://www.shnenglu.com/vczh/archive/2010/06/24/118603.html闄堟鐎?vczh)闄堟鐎?vczh)Wed, 23 Jun 2010 18:12:00 GMThttp://www.shnenglu.com/vczh/archive/2010/06/24/118603.htmlhttp://www.shnenglu.com/vczh/comments/118603.htmlhttp://www.shnenglu.com/vczh/archive/2010/06/24/118603.html#Feedback23http://www.shnenglu.com/vczh/comments/commentRss/118603.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/118603.htmlVczh Library++3.0琚垜鎼炲緱寰堢璋便備負浜嗗紑鍙戠淮鎶ょ殑閬嶅巻銆佸噺灝戠矖蹇冪姱涓嬬殑閿欒浠ュ強澧炲己鍗曞厓嫻嬭瘯銆佸洖褰掓祴璇曞拰嫻嬭瘯宸ュ叿錛屽洜姝よ褰曚笅涓浜涘紑鍙戜笂鐨勫皬鎶宸э紝浠ヤ究鎶涚爾寮曠帀錛岄犵浠栦漢銆傛榪庨珮鎵嬫潵鍠鳳紝鑿滈笩鑶滄嫓銆?br>
    涓婁竴綃囨枃绔?/a>璁插埌浜嗗浣曟鏌ュ唴瀛樻硠闇層傚叾瀹炲彧瑕佽偗鐢–++鐨凷TL閲岄潰鐨勯珮綰у姛鑳界殑璇濓紝鍐呭瓨娉勯湶鏄緢瀹規(guī)槗閬垮厤鐨勩傛垜鍦ㄥ紑鍙慥czh Library++ 3.0鐨勬椂鍊欙紝鎵鏈夌殑嫻嬭瘯鐢ㄤ緥閮戒繚璇佽窇瀹屼簡娌℃湁鍐呭瓨娉勯湶銆備絾鏄緢鍙儨鏈変簺C++鍥㈤槦涓嶈兘浣跨敤寮傚父錛屾洿鐢氳呬笉鍏佽鍐欐瀯閫犲嚱鏁版瀽鏋勫嚱鏁頒箣綾伙紝鍓嶄竴涓繕濂斤紝鍚庝竴涓畝鐩村氨鏄湪鐢–銆傚綋鐒舵湁榪欎簺鍙樻佽瀹氱殑鍦版柟STL閮芥槸鐢ㄤ笉浜嗙殑錛屾墍浠ユ垜浠洿鍔犻渶瑕佹墡瀹炵殑鍩虹鏉ュ紑鍙慍++紼嬪簭銆?br>
    浠婂ぉ榪欎竴綃囦富瑕佽繕鏄鎸囬拡鐨勯棶棰樸傚洜涓轟笂涓綃囨枃绔犱竴絎斿甫榪囷紝浠婂ぉ灝辨潵璇︾粏璁插唴瀛樻硠婕忔垨鑰呴噹鎸囬拡鍙戠敓鐨勫悇縐嶆儏鍐點傚綋鐒舵垜涓嶅彲鑳戒竴涓嬪瓙涓懼嚭鍏ㄩ儴鐨勪緥瀛愶紝鍙兘璇翠竴浜涘父瑙佺殑銆?br>
    涓銆侀敊璇鐩栧唴瀛樸?br>
    涔嬪墠鎻愬埌鐨勪笉鑳介殢渚夸貢memset鍏跺疄灝辨槸涓轟簡閬垮厤榪欎釜闂鐨勩傚叾瀹瀖emcpy涔熶笉鑳戒貢鐢紝鎴戜滑鏉ョ湅涓涓緥瀛愶紝鏈綆鍗曠殑錛?br>
 1 #define MAX_STRING 20;
 2 
 3 struct Student
 4 {
 5   char name[MAX_STRING];
 6   char id[MAX_STRING];
 7   int chinese;
 8   int math;
 9   int english;
10 };

    澶у瀵硅繖縐嶇粨鏋勮偗瀹氬崄鍒嗙啛鎮(zhèn)夛紝姣曠珶鏄ぇ瀛︽椂鍊欑粡甯歌鍐欑殑浣滀笟棰?#8230;…濂戒簡錛屽ぇ瀹跺緢瀹規(guī)槗鐪嬪緱鍑烘潵榪欏叾瀹炴槸C璇█鐨勭粡鍏稿啓娉曘傛垜浠嬁鍒版墜涔嬪悗錛屼竴鑸細鍏堝垵濮嬪寲涓涓嬶紝鐒跺悗璧嬪箋?br>
1 Student vczh;
2 memset(&vczh, 0sizeof(vczh));
3 strcpy(vczh.name, "vczh");
4 strcpy(vczh.id, "VCZH'S ID");
5 vczh.chinese=70;
6 vczh.math=90;
7 vczh.english=80;

    涓轟粈涔堣鍦ㄨ繖閲屼嬌鐢╩emset鍛紵memset鐨勭敤澶勬槸灝嗕竴孌靛唴瀛樼殑姣忎竴涓瓧鑺傞兘璁劇疆鎴愬悓涓涓暟瀛椼傝繖閲屾槸0錛屽洜姝や袱涓瓧絎︿覆鎴愬憳鐨勬墍鏈夊瓧鑺傞兘浼氬彉鎴?銆傚洜姝ゅ湪memset浜哠tudent涔嬪悗錛屾垜浠氳繃姝e父鏂規(guī)硶鏉ヨ闂畁ame鍜宨d鐨勬椂鍊欓兘浼氬緱鍒扮┖涓層傝屼笖濡傛灉Student閲岄潰鏈夋寚閽堢殑璇濓紝0鎸囬拡浠h〃鐨勬槸娌℃湁鎸囧悜浠諱綍鏈夋晥瀵硅薄錛屽洜姝よ繖涓椂鍊欏鎸囬拡鎸囧悜鐨勫璞¤繘琛岃鍐欏氨浼氱珛鍒誨穿婧冦傚浜庡叾浠栨暟鍊鹼紝0涓鑸綔涓哄垵濮嬪間篃涓嶄細鏈変粈涔堥棶棰橈紙double浠涔堢殑瑕佸皬蹇冿級銆傝繖灝辨槸鎴戜滑鍐欑▼搴忕殑鏃跺欎嬌鐢╩emset鐨勫師鍥犮?br>
    濂戒簡錛屽浠婄ぞ浼氳繘姝ワ紝浜烘皯褰撳鍋氫富浜嗭紝姝葷▼浠啀涔熶笉闇瑕佸彈鍒板彲鎭剁殑C璇█鍓ュ墛浜嗭紝鎴戜滑鍙互浣跨敤C++錛佸洜姝ゆ垜浠熷姪STL鐨勫姏閲忔妸Student鏀瑰啓鎴愪笅闈㈣繖縐嶅甫鏈塁++鍛抽亾鐨勫艦寮忥細
1 struct Student
2 {
3   std::string name;
4   std::string id;
5   int chinese;
6   int math;
7   int english;
8 };

    鎴戜滑浠嶇劧闇瑕佸Student榪涜鍒濆鍖栵紝涓嶇劧涓変釜鍒嗘暟榪樻槸闅忔満鍊箋備絾鏄垜浠張涓嶆兂姣忎竴嬈″垱寤虹殑鏃跺欓兘瀵逛粬浠垎鍒繘琛岃祴鍊煎垵濮嬪寲鍩?銆傝繖涓椂鍊欎綘蹇冮噷鍙兘榪樻槸鎯崇潃memset錛?span style="COLOR: red">榪欏氨閿欎簡錛佸湪memset鐨勬椂鍊欙紝浣犱細鎶妔td::string鍐呴儴鐨勪笉鐭ラ亾浠涔堜笢瑗夸篃緇檓emset鎺夈傚亣濡備竴涓┖鐨剆td::string閲岄潰瀛樻斁鐨勬寚閽堟寚鍚戠殑鏄竴涓┖鐨勫瓧絎︿覆鑰屼笉鏄敤0鏉ヤ唬琛ㄧ┖鐨勬椂鍊欙紝涓涓嬪瓙鍐呴儴鐨勬寚閽堝氨琚綘鍒鋒垚0錛岀瓑涓媠td::string鐨勬瀽鏋勫嚱鏁板氨娌″姙娉昫elete鎺夋寚閽堜簡錛屼簬鏄?span style="COLOR: red">鍐呭瓨娉勯湶灝卞嚭鐜頒簡銆傛湁浜涙湅鍙嬪彲鑳戒笉鐭ラ亾涓婇潰閭e彞璇濊鐨勬槸浠涔堟剰鎬濓紝鎴戜滑鐜板湪鏉ユā鎷熶竴涓嬩笉鑳絤emset鐨剆td::string瑕佹庝箞瀹炵幇銆?br>
    涓轟簡璁﹎emset涓瀹氬嚭鐜板唴瀛樻硠闇詫紝閭d箞std::string閲岄潰鐨勬寚閽堝繀欏繪案榪滈兘鎸囧悜涓涓湁鏁堢殑涓滆タ銆傚綋鐒舵垜浠繕闇瑕佸湪瀛楃涓茶繘琛屽鍒剁殑鏃跺欏鍒舵寚閽堛傛垜浠繖閲屼笉鑰冭檻鍚勭浼樺寲鎶鏈紝鐢ㄦ渶綆鍗曠殑鏂規(guī)硶鍋氫竴涓瓧絎︿覆鍑烘潵錛?br>
 1 class String
 2 {
 3 private:
 4   char* buffer;
 5 
 6 public:
 7   String()
 8   {
 9     buffer=new char[1];
10     buffer[0]=0;
11   }
12 
13   String(const char* s)
14   {
15     buffer=new char[strlen(s)+1];
16     strcpy(buffer, s);
17   }
18 
19   String(const String& s)
20   {
21     buffer=new char[strlen(s.buffer)+1];
22     strcpy(buffer, s.buffer);
23   }
24 
25   ~String()
26   {
27     delete[] buffer;
28   }
29 
30   String& operator=(const String& s)
31   {
32     delete[] buffer;
33     buffer=new char[strlen(s.buffer)+1];
34     strcpy(buffer, s.buffer);
35   }
36 };

    浜庢槸鎴戜滑鏉ュ仛涓涓媘emset銆傞鍏堝畾涔変竴涓瓧絎︿覆鍙橀噺錛屽叾嬈emset鎺夛紝璁╂垜浠湅鐪嬩細鍙戠敓浠涔堜簨鎯咃細
1 string s;
2 memset(&s, 0sizeof(s));

    絎竴琛屾垜浠瀯閫犱簡涓涓瓧絎︿覆s銆傝繖涓椂鍊欏瓧絎︿覆鐨勬瀯閫犲嚱鏁板氨浼氬紑濮嬭繍琛岋紝鍥犳strcmp(s.buffer, "")==0銆傜浜岃鎴戜滑鎶婇偅涓瓧絎︿覆緇檓emset鎺変簡銆傝繖涓椂鍊檚.buffer==0銆備簬鏄嚱鏁扮粨鏉熶簡錛屽瓧絎︿覆鐨勬瀽鏋勫嚱鏁板皾璇昫elete榪欎釜鎸囬拡銆傛垜浠煡閬揹elete涓涓?鏄笉浼氭湁闂鐨勶紝鍥犳紼嬪簭涓嶄細鍙戠敓閿欒銆?span style="COLOR: red">鎴戜滑媧葷敓鐢熸妸鏋勯犲嚱鏁拌祴鍊肩粰buffer鐨刵ew char[1]緇欎涪浜?/strong>錛侀搧瀹氬彂鐢熷唴瀛樻硠闇詫紒

    濂戒簡錛屾彁鍑洪棶棰樻昏瑙e喅闂錛屾垜浠笉浣跨敤memset鐨勮瘽錛屾庝箞鍒濆鍖朣tudent鍛紵榪欎釜鍗佸垎濂藉仛錛屾垜浠彧闇瑕佷負Student鍔犱笂鏋勯犲嚱鏁板嵆鍙細
1 struct Student
2 {
3   .//涓嶉噸澶嶉偅浜涘0鏄?/span>
4 
5   Student():chinese(0),math(0),english(0)
6   {
7   }
8 };

    榪欐牱灝卞鏄撳浜嗐傛瘡褰撴垜浠畾涔変竴涓猄tudent鍙橀噺鐨勬椂鍊欙紝鎵鏈夌殑鎴愬憳閮藉垵濮嬪寲濂戒簡銆俷ame鍜宨d鍥犱負string鐨勬瀯閫犲嚱鏁頒篃鑷繁鍒濆鍖栦簡錛屽洜姝ゆ墍鏈夌殑鎴愬憳涔熼兘鍒濆鍖栦簡銆傚姞鍏tudent鐢ㄤ簡涓鍗婃垜浠兂鍐嶅垵濮嬪寲涓涓嬫庝箞鍔炲憿錛熶篃寰堝鏄擄細
1 Student vczh;
2 .//鍚勭浣跨敤
3 vczh=Student();

    緇忚繃涓涓瓑鍙鋒搷浣滅鐨勮皟鐢紝鏃tudent鐨勬墍鏈夋垚鍛樺氨琚竴涓柊鐨勫垵濮嬪寲榪囩殑Student緇欒鐩栦簡錛屽氨濡傚悓鎴戜滑瀵逛竴涓猧nt鍙橀噺閲嶆柊璧嬪間竴鏍峰父瑙併傚綋鐒跺洜涓哄悇縐嶅鍒剁粡甯鎬細鍑虹幇錛屽洜姝ゆ垜浠篃瑕佽窡涓婇潰璐村嚭鏉ョ殑string鐨勪緥瀛愪竴鏍鳳紝瀹炵幇濂介偅4涓嚱鏁般傝嚦姝ゆ垜鍗佸垎涓嶇悊瑙d負浠涔堟煇浜涘洟闃熶笉鍏佽浣跨敤鏋勯犲嚱鏁幫紝鎴戠寽灝辨槸涓轟簡鍙互memset錛屽叾瀹炴槸寰堟病閬撶悊鐨勩?br>
    浜屻佸紓甯搞?/strong>

    鍜嬩竴鐪嬪唴瀛樻硠闇茶窡寮傚父濂藉儚娌′粈涔堝叧緋伙紝浣嗗疄闄呬笂榪欑鎯呭喌鏇村鏄撳彂鐢熴傛垜浠潵鐪嬩竴涓緥瀛愶細
 1 char* strA=new char[MAX_PATH];
 2 if(GetXXX(strA, MAX_PATH)==ERROR) goto RELEASE_STRA;
 3 char* strB=new char[MAX_PATH];
 4 if(GetXXX(strB, MAX_PATH)==ERROR) goto RELEASE_STRB;
 5 
 6 DoSomething(strA, strB);
 7 
 8 RELEASE_STRB:
 9 delete[] strB;
10 RELEASE_STRA:
11 delete[] strA;

    鐩鎬俊榪欒偗瀹氭槸澶у鐨勫父鐢ㄦā寮忋傛垜鍦ㄨ繖閲屼篃涓嶆槸鏁欏攩澶у浣跨敤goto錛屼笉榪囧浜庤繖縐嶄緥瀛愭潵璇達紝鐢╣oto鏄渶浼樼編鐨勮В鍐沖姙娉曚簡銆備絾鏄ぇ瀹跺彲浠ョ湅鍑烘潵錛屾垜浠敤鐨勬槸C++錛屽洜涓鴻繖閲屾湁new銆傚鏋淒oSomething鍙戠敓浜嗗紓甯告庝箞鍔炲憿錛熷鏋淕etXXX鍙戠敓浜嗗紓甯告庝箞鍔炲憿錛熸垜浠繖閲屾病鏈変換浣曠殑try-catch錛屼竴鏈夊紓甯革紝鍑芥暟閲屽厠緇撴潫錛屼袱琛屽彲鎬滅殑delete灝變笉浼氳鎵ц鍒頒簡錛?span style="COLOR: red">浜庢槸鍐呭瓨娉勬紡鍙戠敓浜?/strong>錛?br>
    閭f垜浠浣曢伩鍏嶈繖縐嶆儏鍐典笅鐨勫唴瀛樻硠闇插憿錛熶竴浜涘彲鐖辯殑灝忕泦鍙嬪彲鑳戒細鎯沖埌錛屾棦鐒舵槸鍥犱負娌℃湁catch寮傚父鎵嶅彂鐢熺殑鍐呭瓨娉勯湶錛岄偅鎴戜滑鏉atch鍚э細
 1 char* strA=new char[MAX_PATH];
 2 try
 3 {
 4   if(GetXXX(strA, MAX_PATH)==ERROR) goto RELEASE_STRA;
 5   char* strB=new char[MAX_PATH];
 6   try
 7   {
 8     if(GetXXX(strB, MAX_PATH)==ERROR) goto RELEASE_STRB;
 9     DoSomething(strA, strB);
10   }
11   catch()
12   {
13     delete[] strB;
14     throw;
15   }
16 }
17 catch()
18 {
19   delete[] strA;
20   throw;
21 }
22 
23 RELEASE_STRB:
24 delete[] strB;
25 RELEASE_STRA:
26 delete[] strA;

    浣犺兘鎺ュ彈鍚楋紵褰撶劧鏄笉鑳界殑銆傞棶棰樺嚭鍦ㄥ摢閲屽憿錛熷洜涓篊++娌℃湁try-finally銆備綘鐪嬭繖浜涗唬鐮佸埌澶勯兘鏄浄鍚岀殑涓滆タ錛屾樉鐒舵垜浠渶瑕佺紪璇戝櫒甯垜浠妸榪欎簺闂鎼炲畾銆傛渶濂界殑瑙e喅鏂規(guī)硶鏄粈涔堝憿錛熸樉鐒惰繕鏄瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟銆傛諱箣璁頒綇錛?span style="COLOR: red">濡傛灉鎯寵浜嬫儏鎴愬鍙戠敓錛岄偅涔堜嬌鐢ㄦ瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟銆?br>
    絎竴姝ワ紝GetXXX鏄劇劧鍙兘鏀寔C妯″紡鐨勪笢瑗匡紝鍥犳鎴戜滑瑕佸啓涓涓敮鎸丆++鐨勶細
 1 bool GetXXX2(string& s)
 2 {
 3   char* str=new char[MAX_PATH];
 4   bool result;
 5   try
 6   {
 7     result=GetXXX(str, MAX_PATH);
 8     if(result)s=str;
 9   }
10   catch()
11   {
12     delete[] str;
13     throw;
14   }
15   delete[] str;
16   return result;
17 }

    鍊熷姪榪欎釜鍑芥暟鎴戜滑鍙互鐪嬪埌錛屽洜涓烘湁浜咷etXXX榪欑C鐨勪笢瑗匡紝瀵艱嚧鎴戜滑澶氫簡澶氬皯楹葷儲銆備笉榪囪繖鎬繪槸涓鍔蟲案閫哥殑錛屾湁浜咷etXXX2鍜屼慨鏀逛箣鍚庣殑DoSomething2涔嬪悗錛屾垜浠氨鍙互鐢ㄦ洿綆鍗曠殑鏂規(guī)硶鏉ュ仛浜嗭細
1 string a,b;
2 if(GetXXX2(a) && GetXXX2(b))
3 {
4   DoSomething2(a, b);
5 }

    澶氫箞綆鍗曟槗鎳傘傝繖涓唬鐮佸湪浠諱綍鍦版柟鍙戠敓浜嗗紓甯革紝鎵鏈塶ew鐨勪笢瑗塊兘浼氳delete銆傝繖灝辨槸鏋愭瀯鍑芥暟鐨勪竴涓ソ澶勩備竴涓彉閲忕殑鏋愭瀯鍑芥暟鍦ㄨ繖涓彉閲忚秴鍑轟簡浣滅敤鍩熺殑鏃跺欎竴瀹氫細琚皟鐢紝鏃犺浠g爜鏄庝箞璧板嚭鍘葷殑銆?br>
    浠婂ぉ灝辮鍒拌繖閲屼簡銆傝浜嗚繖涔堝榪樻槸鎯寵澶у涓嶈灝忕湅鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟銆傞偅縐嶅井涓嶈凍閬撶殑鍥犱負涓灝忛儴鍒嗕笉鏄摱棰堢殑鎬ц兘闂鑰屾斁寮冩瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟鐨勫仛娉曪紝緇堢┒鏄涓轟簡淇産ug鑰屽姞鐝殑銆傚彧瑕佹槑鐧藉茍鐢ㄥソ浜嗘瀯閫犲嚱鏁般佹瀽鏋勫嚱鏁板拰寮傚父錛岄偅涔圕++鐨勭壒鎬т篃鍙互璺烠涓鏍鋒竻妤氭槑鐧戒究浜庣悊瑙o紝鑰屼笖鍐欏嚭鏉ョ殑浠g爜鏇村ソ鐪嬬殑銆傚ぇ瀹舵湡寰呯涓夌瘒鍝堛?

]]>
C++瀹炵敤鎶宸э紙涓錛?/title><link>http://www.shnenglu.com/vczh/archive/2010/06/22/118493.html</link><dc:creator>闄堟鐎?vczh)</dc:creator><author>闄堟鐎?vczh)</author><pubDate>Tue, 22 Jun 2010 13:16:00 GMT</pubDate><guid>http://www.shnenglu.com/vczh/archive/2010/06/22/118493.html</guid><wfw:comment>http://www.shnenglu.com/vczh/comments/118493.html</wfw:comment><comments>http://www.shnenglu.com/vczh/archive/2010/06/22/118493.html#Feedback</comments><slash:comments>29</slash:comments><wfw:commentRss>http://www.shnenglu.com/vczh/comments/commentRss/118493.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/vczh/services/trackbacks/118493.html</trackback:ping><description><![CDATA[    澶嶆潅鐨勪笢瑗垮啓澶氫簡錛屽浠婂啓鐐圭畝鍗曠殑濂戒簡銆傜敱浜庡姛鑳戒笂鐨勯渶瑕侊紝<a style="TEXT-DECORATION: underline" target=_blank>Vczh Library++3.0</a>琚垜鎼炲緱寰堢璋便備負浜嗗紑鍙戠淮鎶ょ殑閬嶅巻銆佸噺灝戠矖蹇冪姱涓嬬殑閿欒浠ュ強澧炲己鍗曞厓嫻嬭瘯銆佸洖褰掓祴璇曞拰嫻嬭瘯宸ュ叿錛屽洜姝よ褰曚笅涓浜涘紑鍙戜笂鐨勫皬鎶宸э紝浠ヤ究鎶涚爾寮曠帀錛岄犵浠栦漢銆傛榪庨珮鎵嬫潵鍠鳳紝鑿滈笩鑶滄嫓銆?br><br>    C++瀹炶皳鍚勭璇█涓殑杞倠錛屽姛鑳藉己澶э紝闄烽槺鏇村己澶с傚綋鐒舵垜璁や負涓闂ㄨ璦鐢ㄥ緱涓嶅ソ瀹屽叏鏄▼搴忓憳鐨勮矗浠伙紝涓嶈繃鍥犱負C++娑夊強鍒扮殑姒傚康瀹炲湪鏄お澶氾紝鎯崇敤濂藉疄鍦ㄤ篃涓嶆槸涓浠跺鏄撶殑浜嬫儏銆侰++寮鍙戠殑鏃跺欐繪槸浼氶亣鍒板悇縐嶅悇鏍風殑闂錛屽叾涓渶涓ラ噸鐨勬棤闈炴槸鍐呭瓨鐩稿叧鐨勩侰璇█鐢變簬緇撴瀯綆鍗曪紝鍐呭瓨澶勭悊璧鋒潵铏界劧涓嶅緱鍔涳紝浣嗘葷殑鏉ヨ鎯敤娉曞凡緇忔繁鍏ヤ漢蹇冿紝鍥犳涔熶笉浼氶犳垚浠涔堝緢闅懼彂鐜扮殑閿欒銆侰++灝變笉涓鏍蜂簡銆傛湁浜嗚櫄鍑芥暟銆佹瀯閫犲嚱鏁般佹瀽鏋勫嚱鏁般佸鍒舵瀯閫犲嚱鏁板拰operator=閲嶈澆涔嬪悗錛岃繕鏄湁寰堝浜哄枩嬈㈡妸涓涓被鐩存帴鍐欒繘鏂囦歡嫻侊紝鎴栬呮嬁鏉emset錛屼唬鐮佷竴鍥貢楹伙紝涓嶇煡鎮(zhèn)旀敼涔熴備絾鏄笉鑳藉洜姝ゅ洜鍣庡簾椋燂紝灝卞儚鏌愪漢鍥犱負C++甯︽潵鐨勫績鏅洪棶棰樺お澶氾紝鑷繁鎼炰笉瀹氾紝鑷繁鍥㈤槦涔熸悶涓嶅畾錛屽氨璇碈++涓嶅ソ涓鏍楓?br><br>    鍥犳絎竴綃囨枃绔犱富瑕侀拡瀵瑰唴瀛樻潵璁層傛垜浠鐞嗗唴瀛橈紝絎竴浠朵簨灝辨槸涓嶈鏈夊唴瀛樻硠闇層傚唴瀛樻硠闇蹭笉鑳界瓑鍒版祴璇曠殑鏃跺欙紝閫氳繃闀挎椂闂磋繍琛岀▼搴忓茍瑙傚療浠誨姟綆$悊鍣ㄧ殑鏂規(guī)硶鏉ュ仛錛岃繖鏄劇劧宸茬粡鏅氫簡銆傚垢濂絍isual C++緇欎簡鎴戜滑涓涓崄鍒嗗ソ鐢ㄧ殑宸ュ叿錛歘CrtDumpMemoryLeaks鍑芥暟銆傝繖涓嚱鏁頒細鍦―ebug妯″紡涓嬪線Visual Studio鐨刼utput紿楀彛鎵撳嵃鍑洪偅涓椂鍊欎綘new錛坢alloc錛変簡浣嗘槸榪樻病delete錛坒ree錛夌殑鎵鏈夊唴瀛樺潡鐨勫湴鍧銆侀暱搴︺佸墠N涓瓧鑺傜殑鍐呭鍜屽叾浠栦俊鎭傛庝箞鍋氬憿錛熷叾瀹炲緢綆鍗曪細<br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080"> 1</span> <span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> _CRTDBG_MAP_ALLOC</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 2</span> <span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 3</span> <span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">crtdbg.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 4</span> <span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 6</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> wmain(vint argc , wchar_t</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> args[])<br></span><span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000">{<br></span><span style="COLOR: #008080"> 8</span> <span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 榪欓噷榪愯紼嬪簭錛屽茍鍦ㄤ笅闈㈢殑鍑芥暟璋冪敤涔嬪墠delete鎺夋墍鏈塶ew鐨勪笢瑗?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 9</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">    _CrtDumpMemoryLeaks();<br></span><span style="COLOR: #008080">10</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">11</span> <span style="COLOR: #000000">}</span></div> <br>    鎴戜滑鍙渶瑕佸湪娉ㄩ噴鐨勫湴鏂瑰畬鎴愭垜浠▼搴忕殑鍔熻兘錛岀劧鍚庣‘淇¤嚜宸卞凡緇廳elete鎺夋墍鏈夊簲璇elete鐨勪笢瑗匡紝鏈鍚巁CrtDumpMemoryLeaks()鍑芥暟璋冪敤鐨勬椂鍊欏氨鍙互鎵撳嵃鍑烘病琚玠elete鐨勪笢瑗夸簡銆傝繖涓柟娉曞崄鍒嗙濂囷紝鍥犱負浣犲彧闇瑕佸湪main鍑芥暟鎵鍦ㄧ殑cpp鏂囦歡榪欎箞#include涓涓嬶紝鎵鏈夌殑cpp鏂囦歡閲岄潰鐨刵ew閮戒細鍙楀埌鐩戣錛岃窡騫沖父鎵鐢ㄧ殑鐢ㄥ畯鎶妌ew緇欐崲鎺夌殑榪欑鐮存柟娉曟埅鐒朵笉鍚屻傚鏋滀綘浣跨敤浜嗗叏灞鍙橀噺鐨勮瘽涔熻灝忓績錛屽洜涓哄叏灞鍙橀噺鐨勬瀽鏋勫嚱鏁版槸鍦╩ain鍑芥暟緇撴潫涔嬪悗鎵嶆墽琛岀殑錛屽洜姝ゅ鏋滃湪鍏ㄥ眬鍙橀噺鐨勬瀽鏋勫嚱鏁伴噷闈elete鐨勪笢瑗夸粛鐒朵細琚玙CrtDumpMemoryLeaks鍑芥暟褰撴垚娉勯湶鎺夌殑璧勬簮瀵瑰緟銆傚綋鐒舵湰浜鴻涓哄叏灞鍙橀噺鍙互鐢紝浣嗘槸鍏ㄥ眬鍙橀噺鐨勮祴鍊煎繀欏誨湪main閲岄潰鍋氾紝閲婃斁涔熸槸錛岄櫎闈為偅涓叏灞鍙橀噺鐨勬瀯閫犲嚱鏁版病鏈夌敵璇蜂換浣曞唴瀛橈紝鎵浠ヨ繖涔熸槸涓涓緢濂界殑媯鏌ユ柟娉曘?br><br>    涓嶈繃涓婇潰涔熶粎浠呮槸涓涓憡璇変綘鏈夋病鏈夊唴瀛樻硠婕忕殑鏂規(guī)硶緗簡銆傞偅涔堝浣曢伩鍏嶅唴瀛樻硠闇插憿錛熷綋鐒跺湪璁捐涓浜涙ц兘瑕佹眰娌℃湁姣旀搷浣滅郴緇熸洿鍔犱弗鏍肩殑紼嬪簭鐨勬椂鍊欙紝鍙互浣跨敤浠ヤ笅鏂規(guī)硶錛?br>    1銆佸鏋滄瀯閫犲嚱鏁皀ew浜嗕竴涓璞?span style="COLOR: red"><strong>騫朵嬌鐢ㄦ垚鍛樻寚閽堝彉閲?/strong></span>淇濆瓨鐨勮瘽錛岄偅涔堝繀欏誨湪鏋愭瀯鍑芥暟delete瀹冿紝騫朵笖涓嶈兘鏈変負浜嗘煇浜涗究鍒╄屽皢榪欎釜瀵硅薄鐨勬墍鏈夋潈杞鍑哄幓鐨勪簨鎯呭彂鐢熴?br>    2銆佸湪鑳戒嬌鐢╯hared_ptr鐨勬椂鍊欙紝灝介噺浣跨敤shared_ptr銆俿hared_ptr鍙浣犱笉鍙戠敓寰幆寮曠敤錛岄偅涔堣繖涓笢瑗垮彲浠ュ畨鍏ㄥ湴浜掔浉浼犻掋侀殢渚夸綘鏀懼湪浠涔堝鍣ㄩ噷闈㈡坊鍔犲垹闄ゃ佷綘鎯蟲斁鍝噷灝辨斁鍦ㄥ摢閲岋紝鍐嶄篃涓嶇敤鑰冭檻榪欎釜瀵硅薄鐨勭敓鍛藉懆鏈熼棶棰樹簡銆?br>    3銆佷笉瑕佸湪鏈夋瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟鐨勫璞′笂浣跨敤memset錛堟垨鑰卪emcpy錛夈傚鏋滀竴涓璞¢渶瑕乵emset錛岄偅涔堝湪璇ュ璞$殑鏋勯犲嚱鏁伴噷闈emset鑷繁銆傚鏋滀綘闇瑕乵emset涓涓璞℃暟緇勶紝閭d篃鍦ㄨ瀵硅薄鐨勬瀯閫犲嚱鏁伴噷闈emset鑷繁銆?span style="COLOR: red"><strong>濡傛灉浣犻渶瑕乵emset涓涓病鏈夋瀯閫犲嚱鏁扮殑澶嶆潅瀵硅薄錛岄偅涔堣涓轟粬娣誨姞涓涓瀯閫犲嚱鏁幫紝闄ら潪閭f槸鍒漢鐨凙PI鎻愪緵鐨勪笢瑗?/strong></span>銆?br>    4銆佸鏋滀竴涓璞℃槸緇ф壙浜嗗叾浠栦笢瑗匡紝鎴栬呮煇浜涙垚鍛樿鏍囪浜唙irtual鐨勮瘽錛岀粷瀵逛笉瑕乵emset銆傚璞℃槸鐙珛鐨勶紝涔熷氨鏄鐖剁被鍐呴儴緇撴瀯鐨勬紨鍙樹笉闇瑕佸瀛愮被璐熻矗銆傚摢澶╃埗綾婚噷闈㈠姞浜嗕竴涓猻tring鎴愬憳錛岃瀛愮被涓memset錛屽氨嬈插摥鏃犳唱浜嗐?br>    5銆佸鏋滈渶瑕佷負涓涓璞″畾涔夋瀯閫犲嚱鏁幫紝閭d箞榪炲鍒舵瀯閫犲嚱鏁般乷perator=閲嶈澆鍜屾瀽鏋勫嚱鏁伴兘鍏ㄩ儴鍐欏叏銆傚鏋滀笉鎯沖啓澶嶅埗鏋勯犲嚱鏁板拰operator=鐨勮瘽錛岄偅涔堢敤涓涓┖鐨勫疄鐜板啓鍦╬rivate閲岄潰錛岀‘淇濅換浣曡瘯鍥捐皟鐢ㄨ繖浜涘嚱鏁扮殑浠g爜閮藉嚭鐜扮紪璇戦敊璇?br>    6銆佸鏋滀綘瀹炲湪寰堝枩嬈璇█鐨勮瘽錛岄偅楹葷儲鎹竴涓彧鏀寔C涓嶆敮鎸丆++鐨勭紪璇戝櫒錛屽叏闈㈡潨緇濆洜涓鴻鐢ㄤ簡C++鑰屽鑷翠綘鐨凜鍧忔帀鐨勬儏鍐靛嚭鐜般?br><br>    浠涔堟槸寰幆寮曠敤鍛紵濡傛灉涓や釜瀵硅薄浜掔浉浣跨敤涓涓猻hared_ptr鎴愬憳鍙橀噺鐩存帴鎴栬呴棿鎺ユ寚鍚戝鏂圭殑璇濓紝灝辨槸寰幆寮曠敤浜嗐傚湪榪欑鎯呭喌涓嬪紩鐢ㄨ鏁頒細澶辨晥錛屽洜涓哄氨綆楀杈圭殑shared_ptr鍏ㄩ噴鏀懼厜浜嗭紝寮曠敤璁℃暟涔熶笉浼氭槸0鐨勩?br><br>    浠婂ぉ灝辮鍒拌繖閲屼簡錛岃繃鍑犲ぉ鎴戦珮鍏寸殑璇濆啀鍐欎竴綃囩畫闆嗭紝濡傛灉鎴戞寔緇珮鍏寸殑璇濆憿……鍡棷……銆? <img src ="http://www.shnenglu.com/vczh/aggbug/118493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/vczh/" target="_blank">闄堟鐎?vczh)</a> 2010-06-22 21:16 <a href="http://www.shnenglu.com/vczh/archive/2010/06/22/118493.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://www.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://bcjianyan.com" target="_blank">亚洲一区日韩</a>| <a href="http://sese912.com" target="_blank">国产欧美一区在线</a>| <a href="http://jiujiire.com" target="_blank">一本色道久久88亚洲综合88</a>| <a href="http://4448884.com" target="_blank">亚洲成色999久久网站</a>| <a href="http://17kfe.com" target="_blank">亚洲精品小视频在线观看</a>| <a href="http://668756.com" target="_blank">欧美wwwwww</a>| <a href="http://tfccrk.com" target="_blank">欧美激情视频一区二区三区在线播放 </a>| <a href="http://017492.com" target="_blank">久久aⅴ乱码一区二区三区</a>| <a href="http://moonshile.com" target="_blank">亚洲女同在线</a>| <a href="http://y3u7.com" target="_blank">在线亚洲精品</a>| <a href="http://05078888.com" target="_blank">久久午夜色播影院免费高清</a>| <a href="http://zyjzz.com" target="_blank">久久婷婷综合激情</a>| <a href="http://3374com.com" target="_blank">99re6热只有精品免费观看</a>| <a href="http://wzlingfeng.com" target="_blank">99re66热这里只有精品3直播</a>| <a href="http://huangsedy.com" target="_blank">欧美午夜精品久久久久久人妖 </a>| <a href="http://56lin.com" target="_blank">亚洲欧美日韩国产一区</a>| <a href="http://yxtczx.com" target="_blank">欧美中文字幕</a>| <a href="http://fjrxzscl.com" target="_blank">99热在这里有精品免费</a>| <a href="http://whrcjy.com" target="_blank">亚洲一区二区三区中文字幕在线</a>| <a href="http://3314133.com" target="_blank">黄色精品在线看</a>| <a href="http://spyfaw.com" target="_blank">亚洲精品日韩综合观看成人91</a>| <a href="http://www90aaa.com" target="_blank">国产精品毛片va一区二区三区</a>| <a href="http://2061856.com" target="_blank">久久综合激情</a>| <a href="http://fangxinedu.com" target="_blank">欧美日韩午夜激情</a>| <a href="http://548710.com" target="_blank">玖玖玖国产精品</a>| <a href="http://wg246.com" target="_blank">欧美日韩视频一区二区三区</a>| <a href="http://wwwlywbb.com" target="_blank">久久一二三四</a>| <a href="http://qiezisp2.com" target="_blank">国产精品99免费看 </a>| <a href="http://www-4564949.com" target="_blank">亚洲国产精品一区</a>| <a href="http://qdpetlove.com" target="_blank">国产精品欧美在线</a>| <a href="http://lucky5888.com" target="_blank">欧美国产精品中文字幕</a>| <a href="http://by1473.com" target="_blank">国产精品免费观看视频</a>| <a href="http://ccc36-com.com" target="_blank">欧美激情精品久久久</a>| <a href="http://012928.com" target="_blank">国产精品任我爽爆在线播放</a>| <a href="http://wwwn94.com" target="_blank">欧美成人精品</a>| <a href="http://zztto7.com" target="_blank">国产一区二区中文</a>| <a href="http://clwjbcxs.com" target="_blank">在线亚洲一区</a>| <a href="http://609t.com" target="_blank">日韩视频在线一区二区三区</a>| <a href="http://55psd.com" target="_blank">久久精品国产一区二区三区免费看 </a>| <a href="http://ss2ssc.com" target="_blank">91久久综合亚洲鲁鲁五月天</a>| <a href="http://bgdete.com" target="_blank">亚洲欧美视频在线观看</a>| <a href="http://580078.com" target="_blank">99视频一区</a>| <a href="http://lovehefei.com" target="_blank">久久亚洲精选</a>| <a href="http://668756.com" target="_blank">久久综合久色欧美综合狠狠</a>| <a href="http://www473333.com" target="_blank">欧美午夜在线一二页</a>| <a href="http://2323nn.com" target="_blank">亚洲国产欧美在线人成</a>| <a href="http://www-tk3333.com" target="_blank">精品福利免费观看</a>| <a href="http://wlhtgj.com" target="_blank">亚洲欧美综合精品久久成人</a>| <a href="http://118626cc.com" target="_blank">亚洲一区二区三区高清</a>| <a href="http://sauske.com" target="_blank">欧美黄色影院</a>| <a href="http://huxiu123.com" target="_blank">亚洲大片一区二区三区</a>| <a href="http://www-4564949.com" target="_blank">激情综合色综合久久综合</a>| <a href="http://a718fun.com" target="_blank">亚洲欧美日韩另类</a>| <a href="http://w7727.com" target="_blank">午夜视黄欧洲亚洲</a>| <a href="http://17ang.com" target="_blank">国产精品一级久久久</a>| <a href="http://aabbcc11.com" target="_blank">中日韩男男gay无套</a>| <a href="http://0370city.com" target="_blank">夜夜嗨网站十八久久</a>| <a href="http://xjj733.com" target="_blank">欧美福利一区二区三区</a>| <a href="http://www-498787.com" target="_blank">欧美国产精品劲爆</a>| <a href="http://56x6.com" target="_blank">91久久精品网</a>| <a href="http://kxm6868.com" target="_blank">欧美—级高清免费播放</a>| <a href="http://xxxx48.com" target="_blank">91久久久久</a>| <a href="http://4379d.com" target="_blank">亚洲性夜色噜噜噜7777</a>| <a href="http://737sihu.com" target="_blank">欧美午夜片欧美片在线观看</a>| <a href="http://smdzs.com" target="_blank">99国产精品一区</a>| <a href="http://5566kan.com" target="_blank">亚洲无线观看</a>| <a href="http://45z6.com" target="_blank">国产精品你懂的在线欣赏</a>| <a href="http://110488.com" target="_blank">中文欧美字幕免费</a>| <a href="http://3374com.com" target="_blank">欧美涩涩网站</a>| <a href="http://638179.com" target="_blank">欧美暴力喷水在线</a>| <a href="http://my6557.com" target="_blank">亚洲黄色有码视频</a>| <a href="http://chufengguanye.com" target="_blank">欧美国产日韩精品免费观看</a>| <a href="http://55psd.com" target="_blank">亚洲精品国精品久久99热</a>| <a href="http://91chaopron.com" target="_blank">亚洲乱码日产精品bd</a>| <a href="http://7878168.com" target="_blank">米奇777超碰欧美日韩亚洲</a>| <a href="http://apap77.com" target="_blank">亚洲国产精品专区久久</a>| <a href="http://557523.com" target="_blank">一二三区精品</a>| <a href="http://by5263.com" target="_blank">国产精品视频网址</a>| <a href="http://cnchtx.com" target="_blank">久久国产主播精品</a>| <a href="http://3531888.com" target="_blank">欧美大片国产精品</a>| <a href="http://szsywine.com" target="_blank">一区二区三区欧美在线观看</a>| <a href="http://13751144594.com" target="_blank">欧美视频一区二区三区</a>| <a href="http://jsydjxgs.com" target="_blank">欧美一二三区精品</a>| <a href="http://llamkos.com" target="_blank">老司机免费视频久久</a>| <a href="http://tsjcmm.com" target="_blank">亚洲欧洲一区二区天堂久久 </a>| <a href="http://ddnwater.com" target="_blank">欧美日韩福利在线观看</a>| <a href="http://689657.com" target="_blank">亚洲一区999</a>| <a href="http://hbshwx.com" target="_blank">久久一综合视频</a>| <a href="http://566805.com" target="_blank">亚洲国产欧洲综合997久久</a>| <a href="http://vipaqdx29.com" target="_blank">欧美精品在线一区二区</a>| <a href="http://myasker.com" target="_blank">亚洲一区国产</a>| <a href="http://snis675.com" target="_blank">欧美激情中文字幕一区二区</a>| <a href="http://win-mdk.com" target="_blank">一区二区三区精品视频在线观看</a>| <a href="http://www50050.com" target="_blank">国产精品丝袜91</a>| <a href="http://520844www.com" target="_blank">久久久久九九视频</a>| <a href="http://www72227.com" target="_blank">日韩视频在线一区二区</a>| <a href="http://qibilly.com" target="_blank">久久久www成人免费精品</a>| <a href="http://783956.com" target="_blank">亚洲精品久久视频</a>| <a href="http://www48929.com" target="_blank">国产精品一二</a>| <a href="http://2456yo.com" target="_blank">欧美成人中文字幕</a>| <a href="http://nachang5117.com" target="_blank">亚洲欧美激情精品一区二区</a>| <a href="http://7234hh.com" target="_blank">欧美顶级大胆免费视频</a>| <a href="http://uuuu79.com" target="_blank">午夜视频在线观看一区</a>| <a href="http://avicpharm.com" target="_blank">亚洲国产另类久久久精品极度</a>| <a href="http://unrealcopgmail.com" target="_blank">欧美日韩免费一区</a>| <a href="http://7777977.com" target="_blank">久久久噜噜噜</a>| <a href="http://aydsrmyy.com" target="_blank">亚洲一区三区在线观看</a>| <a href="http://kasimcoal.com" target="_blank">欧美激情第9页</a>| <a href="http://2629929.com" target="_blank">欧美一区二区成人6969</a>| <a href="http://ccly2.com" target="_blank">一区二区三区欧美亚洲</a>| <a href="http://988tz.com" target="_blank">1024成人</a>| <a href="http://booyitech.com" target="_blank">国产一区香蕉久久</a>| <a href="http://ddh345.com" target="_blank">国产精品第一区</a>| <a href="http://ju255.com" target="_blank">欧美电影专区</a>| <a href="http://saobitv.com" target="_blank">久久久久久久久久久一区 </a>| <a href="http://yngtxny.com" target="_blank">老牛影视一区二区三区</a>| <a href="http://4009935888.com" target="_blank">亚洲一区综合</a>| <a href="http://xuanxuan88.com" target="_blank">亚洲精品中文字幕在线</a>| <a href="http://300618.com" target="_blank">国产在线不卡视频</a>| <a href="http://ssis378.com" target="_blank">国产精品日韩在线</a>| <a href="http://mascorcg.com" target="_blank">欧美精品免费播放</a>| <a href="http://wwww20.com" target="_blank">狼狼综合久久久久综合网</a>| <a href="http://hsxinbao.com" target="_blank">亚洲综合久久久久</a>| <a href="http://www99mmnn.com" target="_blank">亚洲免费黄色</a>| <a href="http://seqingdao.com" target="_blank">亚洲国产精品99久久久久久久久</a>| <a href="http://epiegame.com" target="_blank">久久国产精品一区二区三区四区</a>| <a href="http://haole081.com" target="_blank">夜夜嗨av一区二区三区中文字幕</a>| <a href="http://wb2014.com" target="_blank">雨宫琴音一区二区在线</a>| <a href="http://www-65581.com" target="_blank">国产欧美精品在线</a>| <a href="http://t3gg.com" target="_blank">国产农村妇女精品一区二区</a>| <a href="http://596361.com" target="_blank">欧美午夜剧场</a>| <a href="http://junmatek.com" target="_blank">欧美性大战久久久久久久</a>| <a href="http://1369080.com" target="_blank">欧美激情在线</a>| <a href="http://goldteddy.com" target="_blank">欧美人交a欧美精品</a>| <a href="http://49vvvv.com" target="_blank">欧美 亚欧 日韩视频在线</a>| <a href="http://gzzhuangshi.com" target="_blank">久久三级视频</a>| <a href="http://333666333.com" target="_blank">久久亚洲国产成人</a>| <a href="http://77smsm.com" target="_blank">久久裸体视频</a>| <a href="http://thisisfil.com" target="_blank">久久野战av</a>| <a href="http://sese135.com" target="_blank">久久aⅴ国产紧身牛仔裤</a>| <a href="http://yy0754.com" target="_blank">久久精品国产亚洲aⅴ</a>| <a href="http://lukushe.com" target="_blank">午夜精品一区二区三区电影天堂 </a>| <a href="http://saohu79.com" target="_blank">亚洲国产精品久久久久婷婷884 </a>| <a href="http://jkllkg.com" target="_blank">亚洲剧情一区二区</a>| <a href="http://www101804.com" target="_blank">亚洲精选成人</a>| <a href="http://127mingdao.com" target="_blank">亚洲毛片在线免费观看</a>| <a href="http://012492.com" target="_blank">aⅴ色国产欧美</a>| <a href="http://777888789.com" target="_blank">一区二区三区四区五区在线</a>| <a href="http://dxmdzz.com" target="_blank">一区二区三区免费在线观看</a>| <a href="http://huxiu123.com" target="_blank">亚洲桃花岛网站</a>| <a href="http://cnc800.com" target="_blank">亚洲免费中文字幕</a>| <a href="http://quanfadq.com" target="_blank">午夜亚洲福利在线老司机</a>| <a href="http://26cs.com" target="_blank">久久国产加勒比精品无码</a>| <a href="http://p5555ww.com" target="_blank">久久久久久9</a>| <a href="http://744734.com" target="_blank">欧美国产精品劲爆</a>| <a href="http://xp1025.com" target="_blank">亚洲精品国产精品久久清纯直播</a>| <a href="http://6623555.com" target="_blank">亚洲精品久久久久久久久久久</a>| <a href="http://8181777.com" target="_blank">亚洲人成啪啪网站</a>| <a href="http://wansilv.com" target="_blank">亚洲手机在线</a>| <a href="http://musicshq.com" target="_blank">欧美在线播放</a>| <a href="http://517hc5.com" target="_blank">美女国内精品自产拍在线播放</a>| <a href="http://khc83.com" target="_blank">欧美大色视频</a>| <a href="http://jiujiuri8.com" target="_blank">国产精品美女一区二区在线观看</a>| <a href="http://hkjccc.com" target="_blank">国产伦精品一区二区三区视频黑人 </a>| <a href="http://78gde.com" target="_blank">久久青草久久</a>| <a href="http://hongmoyi.com" target="_blank">欧美精品一区二区精品网 </a>| <a href="http://pnxingmei.com" target="_blank">国产日韩一区在线</a>| <a href="http://www-11688.com" target="_blank">亚洲高清在线观看</a>| <a href="http://www-33tt.com" target="_blank">亚洲视频电影在线</a>| <a href="http://6168138.com" target="_blank">久久爱www久久做</a>| <a href="http://22abb.com" target="_blank">亚洲缚视频在线观看</a>| <a href="http://pfpf662.com" target="_blank">中文在线不卡视频</a>| <a href="http://k37b.com" target="_blank">久久久综合精品</a>| <a href="http://hhjc7.com" target="_blank">欧美吻胸吃奶大尺度电影</a>| <a href="http://xxxcalls.com" target="_blank">国产午夜精品一区二区三区视频</a>| <a href="http://556995.com" target="_blank">亚洲激情视频</a>| <a href="http://69jp.com" target="_blank">欧美一区国产一区</a>| <a href="http://bocai4488.com" target="_blank">欧美高清视频在线</a>| <a href="http://avtbr123.com" target="_blank">亚洲一区久久</a>| <a href="http://haixian360.com" target="_blank">欧美www视频</a>| <a href="http://609t.com" target="_blank">国产一二三精品</a>| <a href="http://6673328.com" target="_blank">99精品国产热久久91蜜凸</a>| <a href="http://anxingou365.com" target="_blank">久久国产精品黑丝</a>| <a href="http://hmm47.com" target="_blank">亚洲精品婷婷</a>| <a href="http://521mu.com" target="_blank">久久深夜福利</a>| <a href="http://nvpuow.com" target="_blank">国产欧美一区二区三区久久 </a>| <a href="http://xiuren2021.com" target="_blank">亚洲欧美综合v</a>| <a href="http://91mase.com" target="_blank">欧美激情小视频</a>| <a href="http://51duanxinmao.com" target="_blank">亚洲欧美日韩精品</a>| <a href="http://balqueen.com" target="_blank">欧美国产在线视频</a>| <a href="http://maiiyou.com" target="_blank">国产一区亚洲一区</a>| <a href="http://com42923.com" target="_blank">午夜精品久久久久久久蜜桃app </a>| <a href="http://3531888.com" target="_blank">一区视频在线播放</a>| <a href="http://www-787788.com" target="_blank">午夜亚洲激情</a>| <a href="http://hg98688.com" target="_blank">99日韩精品</a>| <a href="http://sdsankeguo.com" target="_blank">欧美成人免费全部</a>| <a href="http://958997.com" target="_blank">激情五月综合色婷婷一区二区</a>| <a href="http://www-369111.com" target="_blank">亚洲一区成人</a>| <a href="http://fsxinruiph.com" target="_blank">亚洲片国产一区一级在线观看</a>| <a href="http://405151.com" target="_blank">久久久精品一区二区三区</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>