ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>
   腾讯òq¿å·žæ‹›è˜æ‰‹æœºå®¢æˆ·ç«¯å¼€å‘ähå‘?br />Â Â Â åŸºæœ¬è¦æ±‚åQ?br />   1).1ï½?òq´å·¥ä½œç»éªŒï¼›
   2).有Symbian/Andriod/iPhone手机客户端开å‘ç»éª?有Symbian C++å¼€å‘ç»éªŒè€…优å…?åQ?/b>
有æ„å‘者请è”ç³»åQšpeterfan@tencent.com
]]>
1. BaseService
BaseService.h
è¦å®žçŽ°è‡ªå·Þqš„æœåŠ¡¾cÕdªéœ€ä»ŽBaseService¾l§æ‰¿òq¶ä¸”Override相关的virtual函数å›_¯åQŒä¸‹é¢ç¤ºèŒƒä¸€ä¸ªBeepService¾c»ï¼Œè¯¥æœåŠ¡åªæ˜¯ç®€å•地æ¯éš”2¿U’beep一下,ä¸ÞZº†½Ž€å•所有代ç 凿”‘Öœ¨.hæ–‡äšgä¸ï¼š
BeepService.h
通常æ¥è¯´åªé¡»è¦Override上é¢çš?个virtual函数ž®±OK了:
åœ?em>Run()ä¸è¿›è¡Œå®žé™…的工作åQ?em>OnStop(),OnPause(),OnContinue()则是ä¸ÞZº†å“应Service Control Manager的控制ã€?br>
test.cpp
å‡è®¾¾~–译åŽç”Ÿæˆçš„exeæ–‡äšg为beep.exeåQŒåˆ™åœ¨å‘½ä»¤è¡Œä¸å¯ä»¥å¦‚下ä‹É用:
(1). beep -i 安装service(安装以厾pÈ»Ÿ˜q行时会自动å¯åЍ)
(2). beep -u å¸è²service(如果serviceæ£åœ¨˜q行åQŒåˆ™å…ˆåœæ¢serviceå†å¸è½?
BaseServiced çš„ParseStandardArgsæ£æ˜¯ç”¨æ¥è§£æžä¸Šè¿°ä¸¤ä¸ªå‘½ä×oã€?br>
2. ServiceCtrl
虽然Windows自带的Service Control Managerå¯ä»¥æŽ§åˆ¶æœåŠ¡½E‹åºåQŒä½†æ˜¯å¾ˆå¤šæ—¶å€™æˆ‘们都需è¦ç”¨ä»£ç 控制åQŒè¿™ž®Þq”¨åˆ°ServiceCtrl¾c»ï¼Œè¯¥ç±»çš„æŽ¥å£å¦‚下:
ServiceCtrl.h
æŽ¥å£æ¯”较直观没什么好说的åQŒçœ‹ä¸‹é¢çš„示例代ç :
test.cpp
åƒä¸Šé¢æœªç‰¹åŒ–的模æ‰K€šå¸¸å«åšbase templates。当ç„Óž¼Œbase templates能够被特化,在特化这一点上
class templates å’?em>function templates有很大的区别åQšä¸€ä¸?em>class template 能够è¢?em>partially specialized and/or
fully specializedåQŒä¸€ä¸?em>function templateåªèƒ½è¢?em>fully specializedåQŒä½†æ˜¯ç”±äº?em>function templates能够é‡è²æˆ‘们å¯ä»¥é€šè¿‡é‡è²æ¥å®žçŽ°å’Œpartially specialized 相当的功能。下é¢çš„代ç 说明了这些区别:
æ ÒŽ®å‡½æ•°é‡è²è§£æžè§„则åQ?/p>
上é¢è¯´çš„˜q™äº›å…¶å®žéƒ½æ˜¯å¾ˆç®€å•的情况åQŒå¤§å¤šæ•°äººå¾ˆå®ÒŽ˜“ž®Þpƒ½æ˜Žç™½åQŒä¸‹é¢çš„æ‰æ˜¯å®ÒŽ˜“让ähå¼„æØœçš„ï¼š
1.考虑如下代ç åQ?/p>
最åŽä¸€è¡Œçš„¾l“æžœåƒå¤§å¤šæ•°äººæ‰€æœŸæœ›çš„ä¸€æ øP¼Œé—®é¢˜æ˜¯ï¼šä¸ÞZ»€ä¹ˆæœŸæœ›æ˜¯˜q™ä¸ª¾l“æžœåQ?br />å¦‚æžœä½ æœŸæœ›çš„åŽŸå› æ˜¯é”™è¯¯çš„åQŒæŽ¥ä¸‹æ¥çš„ä¸€å®šä¼šè®©ä½ å¥½å¥‡ã€‚ä¹Ÿè®æ€½ 会说åQ?æˆ‘äØ“int*写了一个特化版本,f(p)当然会调ç”?span style="COLOR: #3366ff">c"åQŒä¸òq¸çš„æ˜¯ï¼Œ˜q™æ£æ˜¯é”™è¯¯çš„åŽŸå› !!!
2.å†è€ƒè™‘下é¢çš„代ç :
如果˜q™ä¸ª¾l“æžœè®©ä½ æ„Ÿåˆ°æƒŠå¥‡åQŒé‚£ž®±å¯¹äº†ï¼å¾ˆå¤šäººéƒ½ä¼šæ„Ÿåˆ°æƒŠå¥‡ï¼
ç†è§£˜q™ä¸ªçš„关键是åQ?em style="COLOR: #993300">Specializations don't overload,only the base templates overload.
é‡è²è§£æžä»…仅选择base template(或者nontemplate functionåQŒå¦‚果有的è¯)åQŒåªæœ‰å½“¾~–译器已¾l决定了哪个
base templatež®†ä¼šè¢«é€‰æ‹©åQŒç¼–译器æ‰ä¼š¾l§ç®‹å¾€ä¸‹å¯»æ‰ùN€‚åˆçš„特化版本,如果扑ֈ°äº†å°±ä½¿ç”¨é‚£ä¸ªç‰¹åŒ–版本ã€?br />
最åŽï¼Œåº”当é¿å…特化函数模æ¿åQŒä¹Ÿè¦é¿å…é‡è½½å‡½æ•°æ¨¡æ?nontemplate functionçš„é‡è½½å½“然没问题)。如果一定覘q™æ ·åQŒå¯ä»¥ä‹É用如下方法模拟函数模æ¿çš„å特化:
2.声明一个类实现Runnable接å£òq¶å®žçްrunæ–ÒŽ³•åQ?/p>