锘??xml version="1.0" encoding="utf-8" standalone="yes"?>伊人久久大香线蕉无码麻豆 ,精品午夜久久福利大片,精品国产综合区久久久久久http://www.shnenglu.com/Ipedo/zh-cnWed, 07 May 2025 17:30:21 GMTWed, 07 May 2025 17:30:21 GMT60Pass鍦⊿DK2004閲岃鏀規垚BeginPass浜?/title><link>http://www.shnenglu.com/Ipedo/archive/2006/04/14/5516.html</link><dc:creator>Ipedo</dc:creator><author>Ipedo</author><pubDate>Fri, 14 Apr 2006 02:28:00 GMT</pubDate><guid>http://www.shnenglu.com/Ipedo/archive/2006/04/14/5516.html</guid><wfw:comment>http://www.shnenglu.com/Ipedo/comments/5516.html</wfw:comment><comments>http://www.shnenglu.com/Ipedo/archive/2006/04/14/5516.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Ipedo/comments/commentRss/5516.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Ipedo/services/trackbacks/5516.html</trackback:ping><description><![CDATA[榪囧幓鐨凱ass()琚垎鎴愪簡鍑犱釜鍑芥暟錛欱eginPass()錛孋ommitChanges()鍜孍ndPass() 鎵浠ワ紝搴旇榪欐牱鏉ョ敤錛?<br />for( number of passes ) <br />{ <br />聽pDevice->BeginPass(); <br />聽pDevice->CommitChanges(); <br />聽// 鍦ㄨ繖閲岀粯鍒跺満鏅?br />聽//銆傘傘傘傘?br />聽pDevice->EndPass(); <br />}<img src ="http://www.shnenglu.com/Ipedo/aggbug/5516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Ipedo/" target="_blank">Ipedo</a> 2006-04-14 10:28 <a href="http://www.shnenglu.com/Ipedo/archive/2006/04/14/5516.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍐滃巻--緗戦〉鏄劇ずhttp://www.shnenglu.com/Ipedo/archive/2006/01/06/2463.htmlIpedoIpedoFri, 06 Jan 2006 04:04:00 GMThttp://www.shnenglu.com/Ipedo/archive/2006/01/06/2463.htmlhttp://www.shnenglu.com/Ipedo/comments/2463.htmlhttp://www.shnenglu.com/Ipedo/archive/2006/01/06/2463.html#Feedback1http://www.shnenglu.com/Ipedo/comments/commentRss/2463.htmlhttp://www.shnenglu.com/Ipedo/services/trackbacks/2463.html

<script language="javascript">
<!--
var bsYear; 
var bsDate; 
var bsWeek; 
var arrLen=8; //鏁扮粍闀垮害
var sValue=0; //褰撳勾鐨勭鏁?BR>var dayiy=0; //褰撳勾絎嚑澶?BR>var miy=0; //鏈堜喚鐨勪笅鏍?BR>var iyear=0; //騫翠喚鏍囪
var dayim=0; //褰撴湀絎嚑澶?BR>var spd=86400; //姣忓ぉ鐨勭鏁?/P>

var year1999="30;29;29;30;29;29;30;29;30;30;30;29"; //354
var year2000="30;30;29;29;30;29;29;30;29;30;30;29"; //354
var year2001="30;30;29;30;29;30;29;29;30;29;30;29;30"; //384
var year2002="30;30;29;30;29;30;29;29;30;29;30;29"; //354
var year2003="30;30;29;30;30;29;30;29;29;30;29;30"; //355
var year2004="29;30;29;30;30;29;30;29;30;29;30;29;30"; //384
var year2005="29;30;29;30;29;30;30;29;30;29;30;29"; //354
var year2006="30;29;30;29;30;30;29;29;30;30;29;29;30";

var month1999="姝f湀;浜屾湀;涓夋湀;鍥涙湀;浜旀湀;鍏湀;涓冩湀;鍏湀;涔濇湀;鍗佹湀;鍗佷竴鏈?鍗佷簩鏈?
var month2001="姝f湀;浜屾湀;涓夋湀;鍥涙湀;闂板洓鏈?浜旀湀;鍏湀;涓冩湀;鍏湀;涔濇湀;鍗佹湀;鍗佷竴鏈?鍗佷簩鏈?
var month2004="姝f湀;浜屾湀;闂頒簩鏈?涓夋湀;鍥涙湀;浜旀湀;鍏湀;涓冩湀;鍏湀;涔濇湀;鍗佹湀;鍗佷竴鏈?鍗佷簩鏈?
var month2006="姝f湀;浜屾湀;涓夋湀;鍥涙湀;浜旀湀;鍏湀;涓冩湀;闂頒竷鏈?鍏湀;涔濇湀;鍗佹湀;鍗佷竴鏈?鍗佷簩鏈?
var Dn="鍒濅竴;鍒濅簩;鍒濅笁;鍒濆洓;鍒濅簲;鍒濆叚;鍒濅竷;鍒濆叓;鍒濅節;鍒濆崄;鍗佷竴;鍗佷簩;鍗佷笁;鍗佸洓;鍗佷簲;鍗佸叚;鍗佷竷;鍗佸叓;鍗佷節;浜屽崄;寤夸竴;寤夸簩;寤夸笁;寤垮洓;寤夸簲;寤垮叚;寤夸竷;寤垮叓;寤夸節;涓夊崄";

var Ys=new Array(arrLen);
Ys[0]=919094400;Ys[1]=949680000;Ys[2]=980265600;
Ys[3]=1013443200;Ys[4]=1044028800;Ys[5]=1074700800;
Ys[6]=1107878400;Ys[7]=1138464000;

var Yn=new Array(arrLen);   //鍐滃巻騫寸殑鍚嶇О
Yn[0]="宸卞嵂騫?;Yn[1]="搴氳景騫?;Yn[2]="杈涘煩騫?;
Yn[3]="澹崍騫?;Yn[4]="鐧告湭騫?;Yn[5]="鐢茬敵騫?;
Yn[6]="涔欓厜騫?;Yn[7]="涓欐垖騫?;
var D=new Date();
var yy=D.getYear();
var mm=D.getMonth()+1;
var dd=D.getDate();
var ww=D.getDay();
if (ww==0) ww="<font color=RED>鏄熸湡鏃?;
if (ww==1) ww="鏄熸湡涓";
if (ww==2) ww="鏄熸湡浜?;
if (ww==3) ww="鏄熸湡涓?;
if (ww==4) ww="鏄熸湡鍥?;
if (ww==5) ww="鏄熸湡浜?;
if (ww==6) ww="<font color=RED>鏄熸湡鍏?;
ww=ww;
var ss=parseInt(D.getTime() / 1000);
if (yy<100) yy="19"+yy;

for (i=0;i<arrLen;i++)
 if (ss>=Ys[i]){
  iyear=i;
  sValue=ss-Ys[i];    //褰撳勾鐨勭鏁?BR>  }
dayiy=parseInt(sValue/spd)+1;    //褰撳勾鐨勫ぉ鏁?/P>

var dpm=year1999;
if (iyear==1) dpm=year2000;
if (iyear==2) dpm=year2001;
if (iyear==3) dpm=year2002;
if (iyear==4) dpm=year2003;
if (iyear==5) dpm=year2004;
if (iyear==6) dpm=year2005;
if (iyear==7) dpm=year2006;
dpm=dpm.split(";");

var Mn=month1999;
if (iyear==2) Mn=month2001;
if (iyear==5) Mn=month2004;
if (iyear==7) Mn=month2006;
Mn=Mn.split(";");

var Dn="鍒濅竴;鍒濅簩;鍒濅笁;鍒濆洓;鍒濅簲;鍒濆叚;鍒濅竷;鍒濆叓;鍒濅節;鍒濆崄;鍗佷竴;鍗佷簩;鍗佷笁;鍗佸洓;鍗佷簲;鍗佸叚;鍗佷竷;鍗佸叓;鍗佷節;浜屽崄;寤夸竴;寤夸簩;寤夸笁;寤垮洓;寤夸簲;寤垮叚;寤夸竷;寤垮叓;寤夸節;涓夊崄";
Dn=Dn.split(";");

dayim=dayiy;

var total=new Array(13);
total[0]=parseInt(dpm[0]);
for (i=1;i<dpm.length-1;i++) total[i]=parseInt(dpm[i])+total[i-1];
for (i=dpm.length-1;i>0;i--)
 if (dayim>total[i-1]){
  dayim=dayim-total[i-1];
  miy=i;
  }
bsWeek=ww;
bsDate=yy+"騫?+mm+"鏈?;
bsDate2=dd;
bsYear="鍐滃巻"+Yn[iyear];
bsYear2=Mn[miy]+Dn[dayim-1];
if (ss>=Ys[7]||ss<Ys[0]) bsYear=Yn[7];
/* 淇敼涓嬮潰鐨勮〃鏍煎睘鎬?/
function CAL(){
document.write("<table border='1' cellspacing='3' width='120' bordercolor='#009B00' bgcolor='#FFFFFF' height='110' cellpadding='2'");
document.write("<tr><td align='center'><b><font color=#008040>"+bsDate+"</font><br><font face='Arial' size='6' color=#FF8040>"+bsDate2+"</font><br><font color=#008040><span style='FONT-SIZE: 10.5pt'>");
document.write(bsWeek+"</span><br>"+"<br></b><font color=#9B4E00>");
document.write(bsYear+"<br>"+bsYear2+"</td></tr></table>");
}
//-->
</script><script language="javascript">CAL();</script>





Ipedo 2006-01-06 12:04 鍙戣〃璇勮
]]>
鍏充簬C++涓璕TTI鐨勭紪鐮佸疄鐜?/title><link>http://www.shnenglu.com/Ipedo/archive/2005/12/12/1699.html</link><dc:creator>Ipedo</dc:creator><author>Ipedo</author><pubDate>Mon, 12 Dec 2005 11:39:00 GMT</pubDate><guid>http://www.shnenglu.com/Ipedo/archive/2005/12/12/1699.html</guid><wfw:comment>http://www.shnenglu.com/Ipedo/comments/1699.html</wfw:comment><comments>http://www.shnenglu.com/Ipedo/archive/2005/12/12/1699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Ipedo/comments/commentRss/1699.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Ipedo/services/trackbacks/1699.html</trackback:ping><description><![CDATA[<b><font color="#ac0000">鎽樿錛?/font></b><br><br>銆銆RTTI (Run-Time Type Identification)鏄潰鍚戝璞$▼搴忚璁′腑涓縐嶉噸瑕佺殑鎶鏈傜幇琛岀殑C++鏍囧噯瀵筊TTI宸茬粡鏈変簡鏄庣‘鐨勬敮鎸併備笉榪囧湪鏌愪簺鎯呭喌涓嬪嚭浜庣壒孌婄殑寮鍙戦渶 瑕侊紝鎴戜滑闇瑕佽嚜宸辯紪鐮佹潵瀹炵幇銆傛湰鏂囦粙緇嶄簡涓浜涘叧浜嶳TTI鐨勫熀紜鐭ヨ瘑鍙婂叾鍘熺悊鍜屽疄鐜般傘銆<br><br><b><font color="#ac0000">RTTI闇姹傦細</font></b><br><br>銆 銆鍜屽緢澶氬叾浠栬璦涓鏍鳳紝C++鏄竴縐嶉潤鎬佺被鍨嬭璦銆傚叾鏁版嵁綾誨瀷鏄湪緙栬瘧鏈熷氨紜畾鐨勶紝涓嶈兘鍦ㄨ繍琛屾椂鏇存敼銆傜劧鑰岀敱浜庨潰鍚戝璞$▼搴忚璁′腑澶氭佹х殑瑕佹眰錛孋++涓? 鐨勬寚閽堟垨寮曠敤(Reference)鏈韓鐨勭被鍨嬶紝鍙兘涓庡畠瀹為檯浠h〃(鎸囧悜鎴栧紩鐢?鐨勭被鍨嬪茍涓嶄竴鑷淬傛湁鏃舵垜浠渶瑕佸皢涓涓鎬佹寚閽堣漿鎹負鍏跺疄闄呮寚鍚戝璞$殑綾? 鍨嬶紝灝遍渶瑕佺煡閬撹繍琛屾椂鐨勭被鍨嬩俊鎭紝榪欏氨浜х敓浜嗚繍琛屾椂綾誨瀷璇嗗埆鐨勮姹傘?br><br>銆銆<b><font color="#ac0000">C++瀵筊TTI鐨勬敮鎸?/font>錛?/b><br><br>銆銆C++鎻愪緵浜嗕袱涓叧閿瓧typeid鍜宒ynamic_cast鍜屼竴涓猼ype_info綾繪潵鏀寔RTTI錛?br><br>銆銆<b>dynamic_cast鎿嶄綔絎︼細</b>瀹冨厑璁稿湪榪愯鏃跺埢榪涜綾誨瀷杞崲錛屼粠鑰屼嬌紼嬪簭鑳藉鍦ㄤ竴涓被灞傛緇撴瀯瀹夊叏鍦拌漿鎹㈢被鍨嬨俤ynamic_cast鎻愪緵浜嗕袱縐嶈漿鎹㈡柟寮忥紝鎶婂熀綾繪寚閽堣漿鎹㈡垚媧劇敓綾繪寚閽堬紝鎴栬呮妸鎸囧悜鍩虹被鐨勫乏鍊艱漿鎹㈡垚媧劇敓綾葷殑寮曠敤銆傝涓嬩緥璁茶堪錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>void company::payroll(employee *pe) {<br>//瀵規寚閽堣漿鎹㈠け璐ワ紝dynamic_cast榪斿洖NULL<br>if(programmer *pm=dynamic_cast<programmer*>(pe)){<br>pm->bonus(); <br>}<br>}<br>void company::payroll(employee &re) {<br>try{<br>//瀵瑰紩鐢ㄨ漿鎹㈠け璐ョ殑璇濓紝鍒欎細浠ユ姏鍑哄紓甯告潵鎶ュ憡閿欒<br>programmer &rm=dynamic_cast<programmer*>(re);<br>pm->bonus();<br>}<br>catch(std::bad_cast){<br><br>}<br>}<br></programmer*></programmer*></td></tr></tbody></table><br>銆銆榪欓噷bonus鏄痯rogrammer鐨勬垚鍛樺嚱鏁幫紝鍩虹被employee涓嶅叿澶囪繖涓壒鎬с傛墍浠ユ垜浠繀欏諱嬌鐢ㄥ畨鍏ㄧ殑鐢卞熀綾誨埌媧劇敓綾葷被鍨嬭漿鎹紝璇嗗埆鍑簆rogrammer鎸囬拡銆?br><br>銆銆<b>typeid鎿嶄綔絎︼細</b>瀹冩寚鍑烘寚閽堟垨寮曠敤鎸囧悜鐨勫璞$殑瀹為檯媧劇敓綾誨瀷銆?br><br>銆銆渚嬪錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>employee* pe=new manager;<br>typeid(*pe)==typeid(manager) //true</td></tr></tbody></table><br>銆銆typeid鍙互鐢ㄤ簬浣滅敤浜庡悇縐嶇被鍨嬪悕錛屽璞″拰鍐呯疆鍩烘湰鏁版嵁綾誨瀷鐨勫疄渚嬨佹寚閽堟垨鑰呭紩鐢紝褰撲綔鐢ㄤ簬鎸囬拡鍜屽紩鐢ㄥ皢榪斿洖瀹冨疄闄呮寚鍚戝璞$殑綾誨瀷淇℃伅銆倀ypeid鐨勮繑鍥炴槸type_info綾誨瀷銆?br><br>銆銆type_info綾伙細榪欎釜綾葷殑紜垏瀹氫箟鏄笌緙栬瘧鍣ㄥ疄鐜扮浉鍏崇殑錛屼笅闈㈡槸銆奀++ Primer銆嬩腑緇欏嚭鐨勫畾涔?鍙傝冭祫鏂橻2]涓皥鍒扮紪璇戝櫒蹇呴』鎻愪緵鐨勬渶灝忎俊鎭噺)錛?br><br> <table bgcolor="#ffffff" width="100%"><tbody><tr><td>class type_info {<br>private:<br>type_info(const type_info&);<br>type_info& operator=( const type_info& );<br>public:<br>virtual ~type_info();<br>int operator==( const type_info& ) const;<br>int operator!=( const type_info& ) const;<br>const char* name() const;<br>};<br><br><span id="rhfnvhl" class="txt"><b><font color="#ac0000">瀹炵幇鐩爣錛?/font></b><br><br>銆銆<b>瀹炵幇鐨勬柟妗?/b><br><br>銆銆<b>鏂規涓錛氬埄鐢ㄥ鎬佹潵鍙栧緱鎸囬拡鎴栧簲鐢ㄧ殑瀹為檯綾誨瀷淇℃伅</b><br><br>銆銆榪欐槸涓涓渶綆鍗曠殑鏂規硶錛屼篃鏄綔鑰呯洰鍓嶆墍閲囩敤鐨勫姙娉曘?br><br>銆銆瀹炵幇錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>enum ClassType{<br>UObjectClass,<br>URectViewClass,<br>UDialogClass,<br>鈥︹?br>};<br>class UObject{<br>virtual char* GetClassName() const {<br>return "UObject";<br>};<br>virtual ClassType TypeOfClass(){<br>return UObjectClass;<br>};<br>};<br>class UDialog{<br>virtual char* GetClassName() const {<br>return "UDialog";<br>};<br>virtual ClassType TypeOfClass(){<br>return UDialogClass;<br>};<br>};</td></tr></tbody></table><br>銆銆紺轟緥錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>UObject po=new UObject;<br>UObject pr=new URectView;<br>UObject pd=new UDialog;<br>cout << "po is a " << po->GetClassName() << endl;<br>cout << "pr is a " << pr->GetClassName() << endl;<br>cout << "pd is a " << pd->GetClassName() << endl;<br>cout<<po->TypeOfClass()==UObjectClass<<endl; typeid(po="=typeid(UObject)<br"> cout<<pr->TypeOfClass()==URectViewClass<<endl; 涓?""><br> cout<<pd->TypeOfClass()==UDialogClass<<endl;><br> cout<<pr->TypeOfClass()==UObjectClass<<endl;><br> cout<<po->TypeOfClass()==UDialogClass<<endl;>< td> </endl;></po-></endl;></pr-></endl;></pd-></endl;></pr-></endl;></po-></td></tr></tbody></table><br>銆銆杈撳嚭錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>po is a UObjectClass<br>pr is a URectViewClass<br>pd is a UDialogClass<br>true<br>true<br>true<br>false<br>false</td></tr></tbody></table><br>銆銆榪欑瀹炵幇鏂規硶涔熷氨鏄湪鍩虹被涓彁渚涗竴涓鎬佺殑鏂規硶錛岃繖涓柟娉曡繑鍥炰竴涓被鍨嬩俊鎭傝繖鏍鋒垜浠兘澶熺煡閬撲竴涓寚閽堟墍鎸囧悜瀵硅薄鐨勫叿浣撶被鍨嬶紝鍙互婊¤凍涓浜涚畝鍗曠殑瑕佹眰銆?br><br>銆銆浣嗘槸寰堟樉鐒訛紝榪欐牱鐨勬柟娉曞彧瀹炵幇浜唗ypeid鐨勯儴鍒嗗姛鑳斤紝榪樺瓨鍦ㄥ緢澶氱己鐐癸細<br><br>銆銆1銆?鐢ㄦ埛姣忓鍔犱竴涓被蹇呴』瑕嗙洊GetClassName鍜孴ypeOfClass涓や釜鏂規硶錛屽鏋滃繕浜嗭紝浼氬鑷寸▼搴忛敊璇?br><br>銆銆2銆?榪欓噷鐨勭被鍚嶅拰綾繪爣璇嗕俊鎭笉瓚充互瀹炵幇dynamic_cast鐨勫姛鑳斤紝浠庤繖涓剰涔変笂鑰岃█姝ゆ柟妗堟牴鏈笉鑳界О涓篟TTI銆?br><br>銆銆3銆?鐢ㄦ埛蹇呴』鎵嬪伐緇存姢姣忎釜綾葷殑綾誨悕涓庢爣璇嗭紝榪欓檺鍒朵簡浠ュ簱鐨勬柟寮忔彁渚涚粰鐢ㄦ埛鐨勫彲鑳姐?br><br>銆銆4銆?鐢ㄦ埛蹇呴』鎵嬪伐娣誨姞GetClassName鍜孴ypeOfClass涓や釜鏂規硶錛屼嬌鐢ㄥ茍涓嶆柟渚褲?br><br>銆銆鍏朵腑涓婇潰鐨勯儴鍒嗛棶棰樻垜浠彲浠ラ噰鐢–/C++涓殑瀹忔妧宸?Macro Magic)鏉ヨВ鍐籌紝榪欎釜鍙互鍦ㄦ垜浠殑鏈緇堣В鍐蟲柟妗堢殑浠g爜涓湅鍒般備笅闈㈤噰鐢ㄦ柟妗堜簩涓皢浜堜互瑙e喅涓婅堪闂銆?br><br></span><span id="7rv7jnp" class="txt">銆銆<b>鏂規浜岋細浠ヤ竴涓被鍨嬭〃鏉ュ瓨鍌ㄧ被鍨嬩俊鎭?/b><br><br>銆銆榪欑鏂規硶鑰冭檻浣跨敤涓涓被緇撴瀯錛岄櫎浜嗕繚鐣欏師鏈夌殑鏁村瀷綾籌D錛岀被鍚嶅瓧絎︿覆澶栵紝澧炲姞浜嗕竴涓寚鍚戝熀綾籘ypeInfo鎴愬憳鐨勬寚閽堛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>struct TypeInfo<br>{<br>char* className;<br>int type_id;<br>TypeInfo* pBaseClass;<br>operator== (const TypeInfo& info){<br>return this==&info;<br>}<br>operator!= (const TypeInfo& info){<br>return this!=&info;<br>}<br>};</td></tr></tbody></table><br>銆 銆浠庤繖閲屽彲浠ョ湅鍒幫紝浠ヨ繖縐嶆柟寮忓疄鐜扮殑RTTI涓嶆敮鎸佸閲嶇戶鎵褲傛墍騫稿閲嶇戶鎵垮湪紼嬪簭璁捐涓茍闈炲繀欏伙紝鑰屼笖涔熶笉鎺ㄨ崘銆備笅闈㈢殑浠g爜涓紝鎴戝皢涓篋P9900杞歡欏? 鐩粍涓被灞傛緇撴瀯涓殑鍑犱釜綾繪坊鍔燫TTI鍔熻兘銆侱P9900欏圭洰涓紝緇濆ぇ閮ㄥ垎鐨勭被閮戒互鍗曠戶鎵挎柟寮忎粠UObject榪欎釜鏍圭被鐩存帴鎴栭棿鎺ョ戶鎵胯屾潵銆傝繖鏍鋒垜浠氨 鍙互浠嶶Object寮濮嬶紝鍔犲叆鎴戜滑RTTI鏀寔鎵闇瑕佺殑鏁版嵁鍜屾柟娉曘?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>class UObject<br>{<br>public:<br>bool IsKindOf(TypeInfo& cls); //鍒ゅ埆鏌愪釜瀵硅薄鏄惁灞炰簬鏌愪竴涓被<br>public:<br>virtual int GetTypeID(){return rttiTypeInfo.type_id;}<br>virtual char* GetTypeName(){return rttiTypeInfo.className;}<br>virtual TypeInfo& GetTypeInfo(){return rttiTypeInfo;}<br>static TypeInfo& GetTypeInfoClass(){return rttiTypeInfo;}<br>private:<br>static TypeInfo rttiTypeInfo; <br>};<br>//渚濇涓篶lassName銆乼ype_id銆乸BaseClass璧嬪?br>TypeInfo UObject::rttiTypeInfo={"UObject",0,NULL};</td></tr></tbody></table><br>銆 銆鑰冭檻浠嶶Object灝嗚繖涓猅ypeInfo綾諱綔涓烘瘡涓涓柊澧炵被鐨勯潤鎬佹垚鍛橈紝榪欐牱涓涓被鐨勬墍鏈夊璞″皢鍏變韓TypeInfo鐨勫敮涓瀹炰緥銆傛垜浠笇鏈涜兘澶熷湪紼? 搴忚繍琛屼箣鍓嶅氨涓簍ype_id,className鍋氬ソ鍒濆鍖栵紝騫惰pBaseClass鎸囧悜鍩虹被鐨勮繖涓猅ypeInfo銆?br><br>銆銆姣忎釜綾葷殑TypeInfo鎴愬憳綰﹀畾浣跨敤rttiTypeInfo鐨勫懡鍚嶏紝涓轟簡閬垮厤鍛藉悕鍐茬獊錛屾垜浠皢鍏朵綔涓簆rivate鎴愬憳銆傛湁浜嗗熀綾葷殑鏀寔騫朵笉澶燂紝褰撶敤鎴烽渶瑕丷TTI鏀寔錛岃繕闇瑕佽嚜宸辨潵鍋氫竴浜涗簨鎯咃細<br><br>銆銆1銆?媧劇敓綾婚渶瑕佷粠UObject緇ф壙銆?br><br>銆銆2銆?娣誨姞rttiTypeInfo鍙橀噺銆?br><br>銆銆3銆?鍦ㄧ被澶栨紜垵濮嬪寲rttiTypeInfo闈欐佹垚鍛樸?br><br>銆銆4銆?瑕嗙洊GetTypeID銆丟etTypeName銆丟etTypeInfo銆丟etTypeInfoClass鍥涗釜鎴愬憳鍑芥暟銆?br><br>銆銆濡備笅鎵紺猴細<br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>class UView:public UObject<br>{<br>public:<br>virtual int GetTypeID(){return rttiTypeInfo.type_id;} <br>virtual char* GetTypeName(){return rttiTypeInfo.className;} <br>virtual TypeInfo& GetTypeInfo(){return rttiTypeInfo;} <br>static TypeInfo& GetTypeInfoClass(){return rttiTypeInfo;} <br>private: <br>static TypeInfo rttiTypeInfo; <br>};</td></tr></tbody></table><br>銆銆鏈変簡鍓嶄笁姝ワ紝榪欐牱鎴戜滑灝卞彲浠ュ緱鍒頒竴涓笉綆楀お澶嶆潅鐨勯摼琛ㄢ曗曡繖鏄竴媯電被鍨嬩俊鎭瀯鎴愮殑"鏍?錛屼笌鏁版嵁緇撴瀯涓殑鏍戠殑鍞竴宸埆灝辨槸鍏舵寚閽堟柟鍚戠浉鍙嶃?br><br>銆銆榪欐牱錛屼粠浠諱綍涓涓猆Object鐨勫瓙綾伙紝欏虹潃pBaseClass寰涓婃壘錛屾昏兘閬嶅巻瀹冪殑鎵鏈夌埗綾伙紝鏈緇堝埌杈綰Object銆?br><br>銆銆鍦ㄨ繖涓摼琛ㄧ殑鍩虹涓婏紝瑕佸垽鍒煇涓璞℃槸鍚﹀睘浜庢煇涓涓被灝卞緢綆鍗曘備笅闈㈢粰鍑篣Object::IsKindOf()鐨勫疄鐜般?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>bool UObject::IsKindOf(TypeInfo& cls)<br>{<br>TypeInfo* p=&(this->GetTypeInfo());<br>while(p!=NULL){<br>if(p->type_id==cls.type_id)<br>return true;<br>p=p->pBaseClass;<br>}<br>return false;<br>}<br></td></tr></tbody></table><br>銆銆鏈変簡IsKindOf鐨勬敮鎸侊紝dynamic_cast鐨勫姛鑳戒篃灝卞彲浠ョ敤涓涓畝鍗曠殑safe_cast鏉ュ疄鐜幫細<br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>template <typename t=""><br>inline T* safe_cast(UObject* ptr,TypeInfo& cls)<br>{<br>return (ptr->IsKindOf(cls)?(T*)ptr:NULL);<br>}</typename></td></tr></tbody></table><br>銆 銆鑷蟲錛屾垜浠凡緇忚兘澶熶粠鍔熻兘涓婂畬鎴愬墠闈㈢殑鐩爣浜嗭紝涓嶈繃鐢ㄦ埛瑕佷嬌鐢ㄨ繖涓被搴撶殑RTTI鍔熻兘榪樺緢楹葷儲錛岃鏁插叆涓澶у爢瀵逛粬浠鏃犳剰涔夌殑鍑芥暟浠g爜錛岃鍦ㄥ垵濮嬪寲 rttiTypeInfo闈欐佹垚鍛樻椂鎵嬪伐璁劇疆綾籌D涓庣被鍚嶃傚叾瀹炶繖浜涢夯鐑﹀畬鍏ㄤ笉蹇呬氦緇欐垜浠殑鐢ㄦ埛錛岄傚綋閲囩敤涓浜涘畯鎶宸?Macro Magic)錛屽氨鍙互璁〤++鐨勯澶勭悊鍣ㄦ潵鏇挎垜浠啓寰堝鏋嚗鐨勪唬鐮併傚叧浜庡畯涓嶆槸鏈枃鐨勯噸鐐癸紝浣犲彲浠ヤ粠鏈緇堜唬鐮佹竻鍗曠湅鍒板畠浠備笅闈㈠啀璋堣皥鍏充簬綾籌D鐨勯棶棰樸?br><br>銆銆<font color="#ac0000"><b>綾籌D</b></font><br><br>銆銆涓轟簡浣夸笉鍚岀被鍨嬬殑瀵硅薄鍙尯鍒嗭紝鐢ㄤ竴涓粰姣忎釜TypeInfo瀵硅薄涓涓被ID鏉ヤ綔涓烘瘮杈冪殑渚濇嵁鏄繀瑕佺殑銆?br>鍏? 瀹炲浜庢垜浠繖閲岀殑闇姹傚拰瀹炵幇鏂規硶鑰岃█錛屽叾瀹炵被ID騫朵笉鏄繀欏葷殑銆傛瘡涓涓敮鎸丷TTI鐨勭被閮藉寘鍚簡涓涓潤鎬乀ypeInfo瀵硅薄錛岃繖涓璞$殑鍦板潃灝辨槸鍦ㄨ繘紼? 涓叏灞鍞竴銆備絾鑰冭檻鍒板叾浠栦竴浜涙妧鏈錛氬姩鎬佸璞″垱寤恒佸璞″簭鍒楀寲絳夛紝瀹冧滑鍙兘浼氳姹俁TTI緇欏嚭涓涓潤鎬佷笉鍙樼殑ID銆傚湪鏈枃鐨勫疄鐜頒腑錛屽姝や綔浜嗘湁鐩婄殑灝? 璇曘?br><br>銆銆棣栧厛澹版槑涓涓敤鏉ヤ駭鐢熼掑綾籌D鐨勫叏灞鍙橀噺銆傚啀澹版槑濡備笅涓涓粨鏋勶紝娌℃湁鏁版嵁鎴愬憳錛屽彧鏈変竴涓瀯閫犲嚱鏁扮敤浜庡垵濮嬪寲TypeInfo鐨勭被ID錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>extern int TypeInfoOrder=0;<br>struct InitTypeInfo<br>{<br>InitTypeInfo(TypeInfo* info)<br>{<br>info->type_id=TypeInfoOrder++;<br>}<br>};</td></tr></tbody></table><br>銆銆涓篣Object娣誨姞涓涓猵rivate鐨勯潤鎬佹垚鍛樺強鍏跺垵濮嬪寲錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>class UObject<br>{<br>//鈥︹?br>private:<br>static InitTypeInfo initClassInfo;<br>};<br>InitTypeInfo UObject::initClassInfo(&(UObject::rttiTypeInfo));</td></tr></tbody></table><br>銆 銆騫朵笖瀵規瘡涓涓粠UObject媧劇敓鐨勫瓙綾諱篃榪涜鍚屾牱鐨勬坊鍔犮傝繖鏍鋒偍灝嗙湅鍒幫紝鍦–++涓誨嚱鏁版墽琛屽墠錛屽惎鍔ㄤ唬鐮佸皢鏇挎垜浠皟鐢ㄦ瘡涓涓被鐨? initClassInfo鎴愬憳鐨勬瀯閫犲嚱鏁癐nitTypeInfo::InitTypeInfo(TypeInfo* info)錛岃屾鏄繖涓嚱鏁版浛鎴戜滑浜х敓騫惰緗簡綾籌D銆侷nitTypeInfo鐨勬瀯閫犲嚱鏁拌繕鍙互鏇挎垜浠仛鍏朵粬涓浜涙湁鐢ㄧ殑鍒濆鍖栧伐浣滐紝姣斿灝嗘墍鏈夌殑 TypeInfo淇℃伅鐧誨綍鍒頒竴涓〃鏍奸噷錛岃鎴戜滑鍙互寰堟柟渚跨殑閬嶅巻瀹冦?br><br>銆銆浣嗗疄璺典笌鏌ラ槄璧勬枡璁╂垜浠彂鐜幫紝鐢變簬C++涓闈欐佹垚鍛樺垵濮嬪寲鐨勯『搴忔病鏈夋槑紜殑瑙勫畾錛屾墍浠ヨ繖鏍風殑鏂瑰紡浜х敓鍑烘潵鐨勭被ID騫墮潪瀹屽叏闈欐侊紝鎹竴涓紪璇戝櫒緙栬瘧鎵ц浜х敓鐨勭粨鏋滃彲鑳藉畬鍏ㄤ笉鍚屻?br><br>銆銆榪樻湁涓涓彲浠ヨ冭檻鐨勬柟妗堟槸閲囩敤鏌愮鏃犲啿紿丠ASH綆楁硶錛屽皢綾誨悕杞崲鎴愪負涓涓敮涓鏁存暟銆備嬌鐢ㄦ爣鍑咰RC32綆楁硶浠庣被鍨嬪悕璁$畻鍑轟竴涓暣鏁頒綔涓虹被ID涔熻鏄釜涓嶉敊鐨勬兂娉昜3]銆?br><br>銆銆紼嬪簭娓呭崟<br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>// URtti.h <br>#ifndef __URTTI_H__<br>#define __URTTI_H__<br><br>class UObject;<br><br>struct TypeInfo<br>{<br>char* className;<br>int type_id;<br>TypeInfo* pBaseClass;<br>operator== (const TypeInfo& info){<br>return this==&info;<br>}<br>operator!= (const TypeInfo& info){<br>return this!=&info;<br>}<br>};<br><br>inline std::ostream& operator<< (std::ostream& os,TypeInfo& info)<br>{<br>return (os<< "[" << &info << "]" << "\t"<br><< info.type_id << ":"<br><< info.className << ":"<br><< info.pBaseClass << std::endl);<br>}<br><br>extern int TypeInfoOrder;<br><br>struct InitTypeInfo<br>{<br>InitTypeInfo(/*TypeInfo* base,*/TypeInfo* info)<br>{<br>info->type_id=TypeInfoOrder++;<br>}<br>};<br><br>#define TYPEINFO_OF_CLASS(class_name) (class_name::GetTypeInfoClass())<br>#define TYPEINFO_OF_OBJ(obj_name) (obj_name.GetTypeInfo())<br>#define TYPEINFO_OF_PTR(ptr_name) (ptr_name->GetTypeInfo())<br><br>#define DECLARE_TYPEINFO(class_name) \<br>public: \<br>virtual int GetTypeID(){return TYPEINFO_MEMBER(class_name).type_id;} \<br>virtual char* GetTypeName(){return TYPEINFO_MEMBER(class_name).className;} \<br>virtual TypeInfo& GetTypeInfo(){return TYPEINFO_MEMBER(class_name);} \<br>static TypeInfo& GetTypeInfoClass(){return TYPEINFO_MEMBER(class_name);} \<br>private: \<br>static TypeInfo TYPEINFO_MEMBER(class_name); \<br>static InitTypeInfo initClassInfo; \<br><br>#define IMPLEMENT_TYPEINFO(class_name,base_name) \<br>TypeInfo class_name::TYPEINFO_MEMBER(class_name)= \<br>{#class_name,0,&(base_name::GetTypeInfoClass())}; \<br>InitTypeInfo class_name::initClassInfo(&(class_name::TYPEINFO_MEMBER(class_name)));<br><br>#define DYNAMIC_CAST(object_ptr,class_name) \<br>safe_cast<class_name>(object_ptr,TYPEINFO_OF_CLASS(class_name))<br><br>#define TYPEINFO_MEMBER(class_name) rttiTypeInfo<br><br>class UObject<br>{<br>public:<br>bool IsKindOf(TypeInfo& cls);<br>public:<br>virtual int GetTypeID(){return TYPEINFO_MEMBER(UObject).type_id;}<br>virtual char* GetTypeName(){return TYPEINFO_MEMBER(UObject).className;}<br>virtual TypeInfo& GetTypeInfo(){return TYPEINFO_MEMBER(UObject);}<br>static TypeInfo& GetTypeInfoClass(){return TYPEINFO_MEMBER(UObject);}<br>private:<br>static TypeInfo TYPEINFO_MEMBER(UObject);<br>static InitTypeInfo initClassInfo;<br>};<br><br>template <typename t=""><br>inline T* safe_cast(UObject* ptr,TypeInfo& cls)<br>{<br>return (ptr->IsKindOf(cls)?(T*)ptr:NULL);<br>}<br>#endif<br>// URtti.cpp <br>#include "urtti.h"<br><br>extern int TypeInfoOrder=0;<br><br>TypeInfo UObject::TYPEINFO_MEMBER(UObject)={"UObject",0,NULL};<br>InitTypeInfo UObject::initClassInfo(&(UObject::TYPEINFO_MEMBER(UObject)));<br><br>bool UObject::IsKindOf(TypeInfo& cls)<br>{<br>TypeInfo* p=&(this->GetTypeInfo());<br>while(p!=NULL){<br>if(p->type_id==cls.type_id)<br>return true;<br>p=p->pBaseClass;<br>}<br>return false;<br>}<br>// mail.cpp <br>#include <iostream><br>#include "urtti.h"<br>using namespace std;<br><br>class UView:public UObject<br>{<br>DECLARE_TYPEINFO(UView)<br>};<br>IMPLEMENT_TYPEINFO(UView,UObject)<br><br>class UGraph:public UObject<br>{<br>DECLARE_TYPEINFO(UGraph)<br>};<br>IMPLEMENT_TYPEINFO(UGraph,UObject)<br><br>void main()<br>{<br>UObject* po=new UObject;<br>UView* pv=new UView;<br>UObject* pg=new UGraph;<br>if(DYNAMIC_CAST(po,UView)) <br>cout << "po => UView succeed" << std::endl;<br>else<br>cout << "po => UView failed" << std::endl;<br>if(DYNAMIC_CAST(pv,UView))<br>cout << "pv => UView succeed" << std::endl;<br>else<br>cout << "pv => UView failed" << std::endl;<br>if(DYNAMIC_CAST(po,UGraph)) <br>cout << "po => UGraph succeed" << std::endl;<br>else<br>cout << "po => UGraph failed" << std::endl;<br>if(DYNAMIC_CAST(pg,UGraph))<br>cout << "pg => UGraph succeed" << std::endl;<br>else<br>cout << "pg => UGraph failed" << std::endl;<br>}</iostream></typename></class_name></td></tr></tbody></table><br>銆銆<b><font color="#ac0000">瀹炵幇緇撴灉</font></b><br><br>銆銆鏈枃瀹炵幇浜嗗涓嬪嚑涓畯鏉ユ敮鎸丷TTI錛屽畠浠殑浣跨敤鏂規硶閮藉彲浠ュ湪涓婇潰鐨勪唬鐮佷腑鎵懼埌錛?br>銆銆 <table align="center" border="1" cellspacing="0" width="627"> <tbody> <tr> <td>瀹忓嚱鏁?/td> <td>鍔熻兘鍙婂弬鏁拌鏄?/td></tr> <tr> <td>DECLARE_TYPEINFO(class_name) </td> <td>涓虹被娣誨姞RTTI鍔熻兘鏀懼湪綾誨0鏄庣殑璧峰浣嶇疆</td></tr> <tr> <td>IMPLEMENT_TYPEINFO(class_name,base)</td> <td>鍚屼笂錛屾斁鍦ㄧ被瀹氫箟浠諱綍浣嶇疆</td></tr> <tr> <td>TYPEINFO_OF_CLASS(class_name)</td> <td>鐩稿綋浜巘ypeid(綾誨悕)</td></tr> <tr> <td>TYPEINFO_OF_OBJ(obj_name)</td> <td>鐩稿綋浜巘ypeid(瀵硅薄)</td></tr> <tr> <td>TYPEINFO_OF_PTR(ptr_name)</td> <td>鐩稿綋浜巘ypeid(鎸囬拡)</td></tr> <tr> <td>DYNAMIC_CAST(object_ptr,class_name)</td> <td>鐩稿綋浜巇ynamic_cast<class_name>object_ptr</class_name></td></tr></tbody></table></span><br><p align="right"><br></p><br><span id="rrx7tv9" class="txt">銆銆<b><font color="#ac0000">鎬ц兘嫻嬭瘯</font></b><br><br>銆銆<b>嫻嬭瘯浠g爜錛?/b><br><br>銆銆榪欓噷浣跨敤鐩稿悓嬈℃暟鐨凞YNAMIC_CAST鍜宒ynamic_cast榪涜瀵規瘮嫻嬭瘯錛屽湪VC6.0涓嬬紪璇戣繍琛岋紝浣跨敤榛樿鐨凴elease緙栬瘧閰嶇疆閫夐」銆備負浜嗛伩鍏嶇紪璇戝櫒浼樺寲瀵艱嚧鐨勪笉鍏鉤嫻嬭瘯緇撴灉錛屾垜鍦ㄥ驚鐜腑鍔犲叆浜嗘棤鎰忎箟鐨勮鏁版搷浣溿?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>void main()<br>{<br>UObject* po=new UObject;<br>UView* pv=new UView;<br>UObject* pg=new UGraph;<br>int a,b,c,d;<br>a=b=c=d=0;<br>const int times=30000000;<br>cerr << "鏃墮棿嫻嬭瘯杈撳嚭錛? << endl;<br>cerr << "start my DYNAMIC_CAST at: " << time(NULL) << endl;<br>for(int i=0;i<times;i++){><br> if(DYNAMIC_CAST(po,UView)) a++; else a--;<br>if(DYNAMIC_CAST(pv,UView)) b++; else b--;<br>if(DYNAMIC_CAST(po,UGraph)) c++; else c--;<br>if(DYNAMIC_CAST(pg,UGraph)) d++; else d--;<br>}<br>cerr << "end my DYNAMIC_CAST at: " << time(NULL) << endl;<br>cerr << "start c++ dynamic_cast at: " << time(NULL) << endl;<br>for(i=0;i<times;i++){><br> if(dynamic_cast<uview*>(po)) a++; else a--;<br>if(dynamic_cast<uview*>(pv)) b++; else b--;<br>if(dynamic_cast<ugraph*>(po)) c++; else c--;<br>if(dynamic_cast<ugraph*>(pg)) d++; else d--;<br>}<br>cerr << "end c++ dynamic_cast at: " << time(NULL) << endl;<br>cerr << a << b << c << d << endl;<br>}</ugraph*></ugraph*></uview*></uview*></times;i++){></times;i++){></td></tr></tbody></table><br>銆銆榪愯緇撴灉錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>start my DYNAMIC_CAST at: 1021512140<br>end my DYNAMIC_CAST at: 1021512145<br>start c++ dynamic_cast at: 1021512145<br>end c++ dynamic_cast at: 1021512160</td></tr></tbody></table><br>銆銆榪欐槸涓婅堪鏉′歡涓嬬殑嫻嬭瘯杈撳嚭錛屾垜浠彲浠ョ湅鍒幫紝鏈枃瀹炵幇鐨勮繖涓簿綆RTTI鏂規榪愯DYNAMIC_CAST鐨勬椂闂村紑閿鍙湁dynamic_cast鐨?/3銆備負浜嗗緱鍒版洿鍏ㄩ潰鐨勬暟鎹紝榪樿繘琛屼簡DEBUG緙栬瘧閰嶇疆閫夐」涓嬬殑嫻嬭瘯銆?br><br>銆銆杈撳嚭錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>start my DYNAMIC_CAST at: 1021512041<br>end my DYNAMIC_CAST at: 1021512044<br>start c++ dynamic_cast at: 1021512044<br>end c++ dynamic_cast at: 1021512059</td></tr></tbody></table><br>銆 銆榪欑鎯呭喌涓婦YNAMIC_CAST榪愯閫熷害瑕佹瘮dynamic_cast鎱竴鍊嶅乏鍙熾傚鏋滃湪Release緙栬瘧閰嶇疆閫夐」涓嬪皢UObject:: IsKindOf鏂規硶鏀規垚濡備笅inline鍑芥暟錛屾垜浠皢寰楀埌鏇磋浜哄叴濂嬬殑緇撴灉錛圖YNAMIC_CAST榪愯鏃墮棿鍙湁dynamic_cast鐨? 1/5錛夈?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>inline bool UObject::IsKindOf(TypeInfo& cls)<br>{<br>for(TypeInfo* p=&(this->GetTypeInfo());p!=NULL;p=p->pBaseClass)<br>if(p==&cls) return true;<br>return false;<br>}</td></tr></tbody></table><br>銆銆杈撳嚭錛?br><br> <table bgcolor="#ffffff" width="100%"> <tbody> <tr> <td>start my DYNAMIC_CAST at: 1021512041<br>end my DYNAMIC_CAST at: 1021512044<br>start c++ dynamic_cast at: 1021512044<br>end c++ dynamic_cast at: 1021512059</td></tr></tbody></table><br>銆銆<font color="#ac0000"><b>緇撹錛?/b></font><br><br>銆 銆鐢辨湰鏂囩殑瀹炶返鍙互寰楀嚭緇撹錛岃嚜宸卞姩鎵嬬紪鐮佸疄鐜癛TTI鏄畝鍗曞彲琛岀殑銆傝繖鏍風殑瀹炵幇鍙互鍦ㄧ紪璇戝櫒浼樼鐨勪唬鐮佷紭鍖栦腑琛ㄧ幇鍑烘瘮dynamic_cast鏇村ソ鐨勬? 鑳斤紝鑰屼笖娌℃湁甯︽潵榪囧鐨勫瓨鍌ㄥ紑閿銆傛湰鏂囩殑RTTI浠ユц兘涓轟富瑕佽璁$洰鏍囷紝鍦ㄥ疄鐜頒笂涓瀹氱▼搴︿笂鍙楀埌浜哅FC鐨勫獎鍝嶃傞備簬宓屽叆寮忕幆澧冦?/span><br></td></tr></tbody></table><img src ="http://www.shnenglu.com/Ipedo/aggbug/1699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Ipedo/" target="_blank">Ipedo</a> 2005-12-12 19:39 <a href="http://www.shnenglu.com/Ipedo/archive/2005/12/12/1699.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>c錛嬶紜闅忕瑪1http://www.shnenglu.com/Ipedo/archive/2005/12/06/1567.htmlIpedoIpedoTue, 06 Dec 2005 09:01:00 GMThttp://www.shnenglu.com/Ipedo/archive/2005/12/06/1567.htmlhttp://www.shnenglu.com/Ipedo/comments/1567.htmlhttp://www.shnenglu.com/Ipedo/archive/2005/12/06/1567.html#Feedback0http://www.shnenglu.com/Ipedo/comments/commentRss/1567.htmlhttp://www.shnenglu.com/Ipedo/services/trackbacks/1567.html2銆佸綋鍑芥暟鍙傛暟鏄ぇ鐨勭粨鏋勭殑鏃跺欙紝灝介噺浣跨敤緇撴瀯鐨勬寚閽堟垨寮曠敤錛岄伩鍏嶅ぇ鐨勫唴瀛樻搷浣滐紙澶嶅埗鐨勫紑閿錛夛紝鍙傛暟浣跨敤鐨勬椂鍊欐敞鎰忎笉甯屾湜鍑芥暟鍐呮敼鍙樺師鏉ュ兼椂錛屽簲璇ュ姞涓奵onst淇グ絎﹀彿錛?BR>3銆佷嬌鐢ㄥ閲嶇戶鎵挎椂搴旇閬垮厤鍑虹幇DOD錛堥捇鐭沖瀷緇ф壙鏍戯級錛岃櫄緇ф壙鍙互瑙e喅榪欎釜闂錛屼絾鏄簲鐢ㄦ椂搴旇灝介噺閬垮厤榪欎簩鑰咃紱
4銆佸敖閲忓鐨勪嬌鐢╟onst錛?BR>5銆佸紩鐢ㄥ彧鑳借鍒濆鍖栦竴嬈★紝鎸囬拡鍙互琚嬈¤祴鍊鹼紝鍙互榪欎箞璇達紝寮曠敤鏄痗onst鎸囬拡錛涘紩鐢ㄥ繀欏誨湪鐢蟲槑鐨勬椂鍊欏垵濮嬪寲錛屾寚閽堝垯涓嶇敤錛屽紩鐢ㄤ笉鑳戒負NULL錛屼篃涓嶈兘new鍜宒elete錛屽畠鏇磋薄涓涓璞★紱
6銆佸洓縐峜錛嬶紜椋庢牸鐨勫己鍒惰漿鎹紝static_cast(瑙勫畾琚漿鎹㈢殑浜岃呭瓨鍦ㄨ仈緋伙紝鍦ㄥ悓涓緇ф壙浣撶郴鍐?錛宑onst_cast錛堝皢甯擱噺杞崲涓洪潪甯擱噺錛夛紝reinterpret_cast錛堣漿鎹換浣曠被鍨嬶紝鍚宑鐨勫己鍒惰漿鎹級錛宒ynamic_cast錛堝姩鎬佺被鍨嬭漿鎹紝闇瑕佺紪璇戝櫒鏀寔榪愯鏈熺被鍨嬩俊鎭疪TTI錛夈?img src ="http://www.shnenglu.com/Ipedo/aggbug/1567.html" width = "1" height = "1" />

Ipedo 2005-12-06 17:01 鍙戣〃璇勮
]]>
瀹炵敤瀹忥紞錛峷c錛嬶紜涓柟渚挎敞閲?/title><link>http://www.shnenglu.com/Ipedo/archive/2005/12/02/1495.html</link><dc:creator>Ipedo</dc:creator><author>Ipedo</author><pubDate>Fri, 02 Dec 2005 06:46:00 GMT</pubDate><guid>http://www.shnenglu.com/Ipedo/archive/2005/12/02/1495.html</guid><wfw:comment>http://www.shnenglu.com/Ipedo/comments/1495.html</wfw:comment><comments>http://www.shnenglu.com/Ipedo/archive/2005/12/02/1495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Ipedo/comments/commentRss/1495.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Ipedo/services/trackbacks/1495.html</trackback:ping><description><![CDATA[<P>    '娣誨姞鏂囦歡澶村畾涔?BR>    Public Sub AddFileHead()</P> <P>        Dim objTextSelection As TextSelection<BR>        Dim comment As String<BR>        objTextSelection = CType(DTE.ActiveDocument.Selection, EnvDTE.TextSelection)<BR>        'objTextSelection.LineUp()<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "http://==================================================================="<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "/** \file"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*  Filename: " + DTE.ActiveDocument.Name<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*  Desc:"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*  His:      Ipedo create @ " + Date.Now<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*/"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "http://==================================================================="</P> <P>    End Sub<BR>    '娣誨姞鏂囦歡鍑芥暟瀹氫箟<BR>    Public Sub AddFunctionHead()</P> <P>        Dim objTextSelection As TextSelection<BR>        Dim comment As String<BR>        objTextSelection = CType(DTE.ActiveDocument.Selection, EnvDTE.TextSelection)<BR>        'objTextSelection.LineUp()<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "/** \brief"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + " " + "* 鍑芥暟鍔熻兘錛?<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "* 鍑芥暟璇存槑錛?<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "* \param  _f1   絎竴涓誕鐐瑰弬鏁?"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "* \param  _f2   絎簩涓誕鐐瑰弬鏁?"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "* \return  bool   榪斿洖涓や釜嫻偣鏁版槸鍚︾浉絳?榪斿洖true鏃惰〃紺虹浉絳?"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "* 綆楁硶鎻忚堪錛?<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "* 錛堟弿榪板唴瀹癸級"<BR>        objTextSelection.NewLine()<BR>        objTextSelection.Text = comment + "*/"</P> <P>    End Sub<BR><BR>    Sub 鏂囦歡娉ㄩ噴()<BR>        DTE.ActiveDocument.Selection.Text = "http://==================================================================="<BR>        DTE.ActiveDocument.Selection.NewLine()<BR>        DTE.ActiveDocument.Selection.Text = "/** \file  "<BR>        DTE.ActiveDocument.Selection.NewLine()<BR>        'DTE.ActiveDocument.Selection.Indent()<BR>        DTE.ActiveDocument.Selection.Text = "* Filename :   " + DTE.ActiveDocument.Name<BR>        DTE.ActiveDocument.Selection.NewLine()<BR>        DTE.ActiveDocument.Selection.Text = "* Desc     :   "<BR>        DTE.ActiveDocument.Selection.NewLine()<BR>        DTE.ActiveDocument.Selection.Text = "* His      :   Windy create @" + Date.Now<BR>        DTE.ActiveDocument.Selection.NewLine()<BR>        DTE.ActiveDocument.Selection.NewLine()<BR>        DTE.ActiveDocument.Selection.DeleteLeft()<BR>        DTE.ActiveDocument.Selection.Text = "*/"<BR>        DTE.ActiveDocument.Selection.NewLine()<BR>        DTE.ActiveDocument.Selection.Text = "http://==================================================================="<BR>        DTE.ActiveDocument.Selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText)<BR>    End Sub</P><img src ="http://www.shnenglu.com/Ipedo/aggbug/1495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Ipedo/" target="_blank">Ipedo</a> 2005-12-02 14:46 <a href="http://www.shnenglu.com/Ipedo/archive/2005/12/02/1495.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>BMP鏂囦歡緇撴瀯 http://www.shnenglu.com/Ipedo/archive/2005/11/12/1104.htmlIpedoIpedoSat, 12 Nov 2005 09:34:00 GMThttp://www.shnenglu.com/Ipedo/archive/2005/11/12/1104.htmlhttp://www.shnenglu.com/Ipedo/comments/1104.htmlhttp://www.shnenglu.com/Ipedo/archive/2005/11/12/1104.html#Feedback2http://www.shnenglu.com/Ipedo/comments/commentRss/1104.htmlhttp://www.shnenglu.com/Ipedo/services/trackbacks/1104.html---- 1. BMP鏂囦歡緇勬垚

---- BMP鏂囦歡鐢辨枃浠跺ご銆佷綅鍥句俊鎭ご銆侀鑹蹭俊鎭拰鍥懼艦鏁版嵁鍥涢儴鍒嗙粍鎴愩?

---- 2. BMP鏂囦歡澶?

---- BMP鏂囦歡澶存暟鎹粨鏋勫惈鏈塀MP鏂囦歡鐨勭被鍨嬨佹枃浠跺ぇ灝忓拰浣嶅浘璧峰浣嶇疆絳変俊鎭?

---- 鍏剁粨鏋勫畾涔夊涓?

typedef struct tagBITMAPFILEHEADER
{
WORDbfType;   // 浣嶅浘鏂囦歡鐨勭被鍨嬶紝蹇呴』涓築M
DWORD   bfSize;   // 浣嶅浘鏂囦歡鐨勫ぇ灝忥紝浠ュ瓧鑺備負鍗曚綅
WORDbfReserved1;  // 浣嶅浘鏂囦歡淇濈暀瀛楋紝蹇呴』涓?
WORDbfReserved2;  // 浣嶅浘鏂囦歡淇濈暀瀛楋紝蹇呴』涓?
DWORD   bfOffBits; // 浣嶅浘鏁版嵁鐨勮搗濮嬩綅緗紝浠ョ浉瀵逛簬浣嶅浘
// 鏂囦歡澶寸殑鍋忕Щ閲忚〃紺猴紝浠ュ瓧鑺備負鍗曚綅
} BITMAPFILEHEADER;

---- 3. 浣嶅浘淇℃伅澶?

BMP浣嶅浘淇℃伅澶存暟鎹敤浜庤鏄庝綅鍥劇殑灝哄絳変俊鎭?
typedef struct tagBITMAPINFOHEADER{
   DWORD  biSize;   // 鏈粨鏋勬墍鍗犵敤瀛楄妭鏁?
   LONGbiWidth;  // 浣嶅浘鐨勫搴︼紝浠ュ儚绱犱負鍗曚綅
   LONGbiHeight; // 浣嶅浘鐨勯珮搴︼紝浠ュ儚绱犱負鍗曚綅
   WORD   biPlanes; // 鐩爣璁懼鐨勭駭鍒紝蹇呴』涓?
   WORD   biBitCount// 姣忎釜鍍忕礌鎵闇鐨勪綅鏁幫紝蹇呴』鏄?(鍙岃壊),
  // 4(16鑹?錛?(256鑹?鎴?4(鐪熷僵鑹?涔嬩竴
   DWORD  biCompression;   // 浣嶅浘鍘嬬緝綾誨瀷錛屽繀欏繪槸 0(涓嶅帇緙?,
  // 1(BI_RLE8鍘嬬緝綾誨瀷)鎴?(BI_RLE4鍘嬬緝綾誨瀷)涔嬩竴
   DWORD  biSizeImage; // 浣嶅浘鐨勫ぇ灝忥紝浠ュ瓧鑺備負鍗曚綅
   LONGbiXPelsPerMeter; // 浣嶅浘姘村鉤鍒嗚鯨鐜囷紝姣忕背鍍忕礌鏁?
   LONGbiYPelsPerMeter;  // 浣嶅浘鍨傜洿鍒嗚鯨鐜囷紝姣忕背鍍忕礌鏁?
   DWORD  biClrUsed;// 浣嶅浘瀹為檯浣跨敤鐨勯鑹茶〃涓殑棰滆壊鏁?
   DWORD  biClrImportant;// 浣嶅浘鏄劇ず榪囩▼涓噸瑕佺殑棰滆壊鏁?
} BITMAPINFOHEADER;

---- 4. 棰滆壊琛?

---- 棰滆壊琛ㄧ敤浜庤鏄庝綅鍥句腑鐨勯鑹詫紝瀹冩湁鑻ュ共涓〃欏癸紝姣忎竴涓〃欏規槸涓涓猂GBQUAD綾誨瀷鐨勭粨鏋勶紝瀹氫箟涓縐嶉鑹層俁GBQUAD緇撴瀯鐨勫畾涔夊涓?

typedef struct tagRGBQUAD {
BYTErgbBlue;// 钃濊壊鐨勪寒搴?鍊艱寖鍥翠負0-255)
BYTErgbGreen;   // 緇胯壊鐨勪寒搴?鍊艱寖鍥翠負0-255)
BYTErgbRed; // 綰㈣壊鐨勪寒搴?鍊艱寖鍥翠負0-255)
BYTErgbReserved;// 淇濈暀錛屽繀欏諱負0
} RGBQUAD;
棰滆壊琛ㄤ腑RGBQUAD緇撴瀯鏁版嵁鐨勪釜鏁版湁biBitCount鏉ョ‘瀹?
褰揵iBitCount=1,4,8鏃訛紝鍒嗗埆鏈?,16,256涓〃欏?
褰揵iBitCount=24鏃訛紝娌℃湁棰滆壊琛ㄩ」銆?
   浣嶅浘淇℃伅澶村拰棰滆壊琛ㄧ粍鎴愪綅鍥句俊鎭紝BITMAPINFO緇撴瀯瀹氫箟濡備笅:
typedef struct tagBITMAPINFO {
   BITMAPINFOHEADER bmiHeader;   // 浣嶅浘淇℃伅澶?
   RGBQUAD  bmiColors[1];  // 棰滆壊琛?
} BITMAPINFO;

---- 5. 浣嶅浘鏁版嵁

---- 浣嶅浘鏁版嵁璁板綍浜嗕綅鍥劇殑姣忎竴涓儚绱犲鹼紝璁板綍欏哄簭鏄湪鎵弿琛屽唴鏄粠宸﹀埌鍙?鎵弿琛屼箣闂存槸浠庝笅鍒頒笂銆備綅鍥劇殑涓涓儚绱犲兼墍鍗犵殑瀛楄妭鏁?

褰揵iBitCount=1鏃訛紝8涓儚绱犲崰1涓瓧鑺?
褰揵iBitCount=4鏃訛紝2涓儚绱犲崰1涓瓧鑺?
褰揵iBitCount=8鏃訛紝1涓儚绱犲崰1涓瓧鑺?
褰揵iBitCount=24鏃?1涓儚绱犲崰3涓瓧鑺?

Windows瑙勫畾涓涓壂鎻忚鎵鍗犵殑瀛楄妭鏁板繀欏繪槸 4鐨勫嶆暟(鍗充互long涓哄崟浣?,涓嶈凍鐨勪互0濉厖錛?

涓涓壂鎻忚鎵鍗犵殑瀛楄妭鏁拌綆楁柟娉? DataSizePerLine= (biWidth* biBitCount+31)/8;

// 涓涓壂鎻忚鎵鍗犵殑瀛楄妭鏁?DataSizePerLine= DataSizePerLine/4*4; // 瀛楄妭鏁板繀欏繪槸4鐨勫嶆暟

浣嶅浘鏁版嵁鐨勫ぇ灝?涓嶅帇緙╂儏鍐典笅): DataSize= DataSizePerLine* biHeight;



Ipedo 2005-11-12 17:34 鍙戣〃璇勮
]]>
鍏充簬MFC瀵硅薄http://www.shnenglu.com/Ipedo/archive/2005/11/12/1103.htmlIpedoIpedoSat, 12 Nov 2005 08:57:00 GMThttp://www.shnenglu.com/Ipedo/archive/2005/11/12/1103.htmlhttp://www.shnenglu.com/Ipedo/comments/1103.htmlhttp://www.shnenglu.com/Ipedo/archive/2005/11/12/1103.html#Feedback0http://www.shnenglu.com/Ipedo/comments/commentRss/1103.htmlhttp://www.shnenglu.com/Ipedo/services/trackbacks/1103.html闃呰鍏ㄦ枃

Ipedo 2005-11-12 16:57 鍙戣〃璇勮
]]>
鍐呭瓨娉勯湶媯嫻?/title><link>http://www.shnenglu.com/Ipedo/archive/2005/10/27/867.html</link><dc:creator>Ipedo</dc:creator><author>Ipedo</author><pubDate>Thu, 27 Oct 2005 07:49:00 GMT</pubDate><guid>http://www.shnenglu.com/Ipedo/archive/2005/10/27/867.html</guid><wfw:comment>http://www.shnenglu.com/Ipedo/comments/867.html</wfw:comment><comments>http://www.shnenglu.com/Ipedo/archive/2005/10/27/867.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/Ipedo/comments/commentRss/867.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Ipedo/services/trackbacks/867.html</trackback:ping><description><![CDATA[    c錛嬶紜涓嫻嬪唴瀛樻硠婕忓彲浠ュ紩鍏ョ郴緇熷畾涔夌殑瀹忔潵鏌ョ湅錛屽唴瀛樺湪鍝釜浣嶇疆娉勬紡<BR><BR>鏂囦歡寮濮嬪鍔犲叆涓嬪垪瀹氫箟<BR>#define _CRTDBG_MAP_ALLOC<BR>#include <stdlib.h><BR>#include <crtdbg.h><BR><BR>紼嬪簭閫鍑烘椂鍔犲叆浠ヤ笅鍑芥暟錛?BR><BR>_CrtDumpMemoryLeaks();<BR><BR>濡傛灉鏈夋硠婕忎細鏄劇ず<BR>e:\myproject\mltithrd.14\mltithrd.cpp(95) : {68} client block at 0x00372550, subtype c0, 144 bytes long.<BR>a CMultiDocTemplate object at $00372550, 144 bytes long<img src ="http://www.shnenglu.com/Ipedo/aggbug/867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Ipedo/" target="_blank">Ipedo</a> 2005-10-27 15:49 <a href="http://www.shnenglu.com/Ipedo/archive/2005/10/27/867.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍏充簬list control鎺т歡http://www.shnenglu.com/Ipedo/archive/2005/10/26/861.htmlIpedoIpedoWed, 26 Oct 2005 06:44:00 GMThttp://www.shnenglu.com/Ipedo/archive/2005/10/26/861.htmlhttp://www.shnenglu.com/Ipedo/comments/861.htmlhttp://www.shnenglu.com/Ipedo/archive/2005/10/26/861.html#Feedback1http://www.shnenglu.com/Ipedo/comments/commentRss/861.htmlhttp://www.shnenglu.com/Ipedo/services/trackbacks/861.htmlm_list1.SetExtendedStyle( LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES );
LVS_EX_FULLROWSELECT琛ㄧず鍙互鐐逛腑琛屼腑鐨勪換鎰忎竴涓垪閫変腑榪欎竴鏉¤褰?BR>LVS_EX_GRIDLINES琛ㄧず鍒椾箣闂存湁鍒嗛殧絎﹀彿
LVS_EX_CHECKBOXES 琛ㄧず姣忎竴琛岀涓鍒楁槸checkbox


Ipedo 2005-10-26 14:44 鍙戣〃璇勮
]]>
鏂扮殑寮濮?/title><link>http://www.shnenglu.com/Ipedo/archive/2005/10/26/857.html</link><dc:creator>Ipedo</dc:creator><author>Ipedo</author><pubDate>Wed, 26 Oct 2005 01:47:00 GMT</pubDate><guid>http://www.shnenglu.com/Ipedo/archive/2005/10/26/857.html</guid><wfw:comment>http://www.shnenglu.com/Ipedo/comments/857.html</wfw:comment><comments>http://www.shnenglu.com/Ipedo/archive/2005/10/26/857.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/Ipedo/comments/commentRss/857.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Ipedo/services/trackbacks/857.html</trackback:ping><description><![CDATA[     鎽樿:     浠婂ぉ寮濮嬫兂鍐欑偣涓滆タ浜嗭紝寰堝鏃跺欏啓榪囩殑浠g爜鎯崇炕鍑烘潵鐪嬬湅灝辨槸鎵句笉鍒幫紝鍙戝湪blog涓婁篃璁稿彲浠ユ彁渚涗竴涓緢濂界殑鏌ヨ鎵嬫銆?nbsp;    鍓嶄簺澶╁府鍚屽鍐欎簡涓涓暟鎹簱blob瀛樺彇鐨勪竴涓皬紼嬪簭錛屼粠緗戜笂鎵句簡浜涘埆浜虹殑浠g爜鏀逛簡鏀癸紝浣滀負涓涓浘鐗囧瓨鍌ㄥ拰鏌ョ湅鐨勫皬宸ュ叿涔熻繕涓嶉敊錛屽彂鍒拌繖閲屽浠借搗鏉yMfcPhoto銆?nbsp;  &nb...  <a href='http://www.shnenglu.com/Ipedo/archive/2005/10/26/857.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/Ipedo/aggbug/857.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Ipedo/" target="_blank">Ipedo</a> 2005-10-26 09:47 <a href="http://www.shnenglu.com/Ipedo/archive/2005/10/26/857.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.yunea.cn" target="_blank">久久亚洲色一区二区三区</a>| <a href="http://www.p146.cn" target="_blank">久久91亚洲人成电影网站</a>| <a href="http://www.nanling888.cn" target="_blank">欧美大战日韩91综合一区婷婷久久青草 </a>| <a href="http://www.mirbase.cn" target="_blank">久久99亚洲综合精品首页</a>| <a href="http://www.szcybj.cn" target="_blank">亚洲成av人片不卡无码久久 </a>| <a href="http://www.fimtb.cn" target="_blank">狠狠色伊人久久精品综合网</a>| <a href="http://www.rqhsjc.cn" target="_blank">午夜精品久久久久成人</a>| <a href="http://www.splh.net.cn" target="_blank">久久综合九色综合网站</a>| <a href="http://www.fygjkd.cn" target="_blank">久久久久无码国产精品不卡</a>| <a href="http://www.dgtspcb.com.cn" target="_blank">久久精品aⅴ无码中文字字幕不卡</a>| <a href="http://www.manour.cn" target="_blank">MM131亚洲国产美女久久</a>| <a href="http://www.520menghuan.cn" target="_blank">久久亚洲中文字幕精品一区</a>| <a href="http://www.musicweb.cn" target="_blank">久久青青草原亚洲av无码app </a>| <a href="http://www.662z.cn" target="_blank">亚洲色大成网站WWW久久九九</a>| <a href="http://www.commonsoft.cn" target="_blank">久久99国产综合精品免费</a>| <a href="http://www.baizen.cn" target="_blank">欧美激情精品久久久久久</a>| <a href="http://www.todaytrends.cn" target="_blank">国产精品99久久精品</a>| <a href="http://www.uvmq.cn" target="_blank">久久午夜夜伦鲁鲁片免费无码影视 </a>| <a href="http://www.sspfn.cn" target="_blank">亚洲综合精品香蕉久久网</a>| <a href="http://www.baozhilong.cn" target="_blank">国产69精品久久久久9999</a>| <a href="http://www.cczone.cn" target="_blank">国产亚洲欧美精品久久久</a>| <a href="http://www.trjyzj.cn" target="_blank">中文字幕精品久久久久人妻</a>| <a href="http://www.numxj.cn" target="_blank">久久av免费天堂小草播放</a>| <a href="http://www.clkj168.cn" target="_blank">精品国产福利久久久</a>| <a href="http://www.export-trade.com.cn" target="_blank">77777亚洲午夜久久多喷</a>| <a href="http://www.lawyer010.cn" target="_blank">性高朝久久久久久久久久</a>| <a href="http://www.gp402.cn" target="_blank">久久久久国产视频电影</a>| <a href="http://www.kapatina.cn" target="_blank">久久午夜电影网</a>| <a href="http://www.nancanxie.cn" target="_blank">91精品国产91久久综合</a>| <a href="http://www.2782yh.cn" target="_blank">久久久久99精品成人片试看</a>| <a href="http://www.donki.net.cn" target="_blank">久久久久久久波多野结衣高潮</a>| <a href="http://www.wxyuyang.com.cn" target="_blank">久久精品亚洲乱码伦伦中文</a>| <a href="http://www.jy06.cn" target="_blank">久久99精品免费一区二区</a>| <a href="http://www.jiqirenedu.cn" target="_blank">亚洲国产成人久久精品动漫</a>| <a href="http://www.nanning315.cn" target="_blank">国产精品一久久香蕉产线看</a>| <a href="http://www.515176x.cn" target="_blank">精品国产乱码久久久久久1区2区 </a>| <a href="http://www.dishengbao.cn" target="_blank">久久性精品</a>| <a href="http://www.ctoshop163.cn" target="_blank">国产成人久久久精品二区三区</a>| <a href="http://www.puerteam.cn" target="_blank">亚洲成人精品久久</a>| <a href="http://www.lmka.com.cn" target="_blank">99久久国产主播综合精品</a>| <a href="http://www.czzhiyou.cn" 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>