@陳梓瀚(vczh)
這種寫法在VC6中編譯不過的,不知道有沒有變通手法啊
我感覺這里面說的只有一半適合新人。這文章你在哪里看到的?
re: [翻譯]游戲主循環(huán) 李現(xiàn)民 2009-08-26 12:18
不錯(cuò)的文章,受教了。我以前見過的設(shè)計(jì)并沒有將update_game與display_game進(jìn)行明確的區(qū)分
re: C++編程中的一些感悟 李現(xiàn)民 2009-08-21 22:43
第六條,比較好
簡單意味著更容易理解,意味著程序邏輯更容易組織,意味著更容易保持正確性。函數(shù)參數(shù)應(yīng)該盡可能少,函數(shù)體應(yīng)該盡可能短,類應(yīng)該盡可能小---這些都是設(shè)計(jì)與折衷的問題
re: 一個(gè)有趣的小問題 李現(xiàn)民 2009-08-21 11:25
對于錯(cuò)誤代碼的處理,不同的編譯器會(huì)使用不同的手法, 所以這樣的代碼還是少寫
使用template method意味著使用了繼承, 現(xiàn)在我覺得這樣的代碼應(yīng)該少用,但仍然還沒有在實(shí)踐上找到好的替代方案
我的理解是:singleton要少用,它就是全局變量;沒有必要搞太復(fù)雜,使用一個(gè)局部靜態(tài)變量就可以了
把大量的get, set函數(shù)都寫出來了,通常這意味了完成沒有封裝,或者說從訪問性上這樣做跟將該變量聲名為public是差不多的,我覺得根本的解決方案還是要保持類的數(shù)據(jù)成員數(shù)目比較小才好
re: c++調(diào)試小技巧 李現(xiàn)民 2009-08-12 21:40
不會(huì)引起#endif配對的錯(cuò)亂么?
你不能用sizeof,string是一個(gè)對象, sizeof只是其對象的大小,不同的平臺實(shí)現(xiàn)差別很大;你最好只寫string中的字符到文件中,然后反讀出來構(gòu)造一個(gè)新的string
對于分?jǐn)偟蕉鄮姆桨福_實(shí)身有體會(huì),記得以前做過一個(gè)游戲模板數(shù)據(jù)查詢的工具,是用MFC做的,由于一次性查找到的數(shù)據(jù)過多,一下子加載到列表控件中會(huì)引起很嚴(yán)重的停頓,于是我便學(xué)游戲的樣子將其放到多個(gè)幀中處理,程序仍然是單線程,但立馬流暢了很多。
re: 今天找到一個(gè)不得不用deque的理由 李現(xiàn)民 2009-08-09 19:58
STL只是一份標(biāo)準(zhǔn)還不是實(shí)現(xiàn),作為vector來講,它設(shè)計(jì)目標(biāo)應(yīng)該是作為一個(gè)大小伸縮的數(shù)組,比如&v[0]可以當(dāng)作一個(gè)數(shù)組的指針(如果!v.empty()的話),而deque則不行;deque為了能夠以常數(shù)時(shí)間在順序容器的頭部及尾部進(jìn)行push操作而設(shè)計(jì)的,但這個(gè)設(shè)計(jì)的代價(jià)通常很大,應(yīng)該并不是你所想像的二維數(shù)組的形式,比如SGI的deque設(shè)計(jì)就采用了一種類似于文件系統(tǒng)中二級表的方式,其直接結(jié)果就是迭代器操作的代價(jià)很高。現(xiàn)實(shí)程序中你會(huì)發(fā)現(xiàn)很少有人會(huì)用deque,這固然有書中介紹比較少的原因,但也與其操作代價(jià)較高是分不開的。
我的意見是,除非不得以,否則使用vector而不要用deque;
你的這種情況,我建議你可以自己寫一個(gè)容器,那怕是用memove,通常也會(huì)比std::vector快很多的
我現(xiàn)在也在用onidle寫一個(gè)編輯器,我發(fā)現(xiàn)打開這個(gè)編輯器窗口的時(shí)候,放在它前面的其它程序窗口就會(huì)死掉(也不是死掉, 就是反應(yīng)特別慢),我有些懷疑是onidle的問題
我發(fā)現(xiàn)在cppblog上開博的有很多都是做游戲的, 感覺這從側(cè)面反應(yīng)了現(xiàn)在游戲占了c++程序員的很大一部分啊
re: 尋找"發(fā)帖水王" 李現(xiàn)民 2009-07-09 09:11
這個(gè)是編程之美里的題吧?
re: 基類角色之對象管理器 李現(xiàn)民 2009-07-03 12:03
@Kevin Lynx
今天我看了下,你這種實(shí)現(xiàn)方式就已經(jīng)是觀察者了,其中CMonster 就是被觀察的(observable),而所有使用auto_null<>對象的都是觀察者(observer), 這種實(shí)現(xiàn)方法我覺得至少有兩個(gè)缺點(diǎn):
1,會(huì)強(qiáng)制observable都使用ref_base 基類,同時(shí)observer需要使用auto_null<>去封裝對象,因此即使新設(shè)計(jì)的類可以使用auto_null,但舊有的、需要被觀察的類無法自動(dòng)成為observable,因?yàn)樗鼈儾辉^承ref_base
2,使用auto_null對象時(shí),IDE的智能通常無法診測出具體對象(CMonster)內(nèi)部的函數(shù)名,只能診測出像fetch()這些
re: 基類角色之對象管理器 李現(xiàn)民 2009-07-02 18:05
@Kevin Lynx
我感覺那個(gè)link的意思有點(diǎn)像觀察者observer,即:當(dāng)一個(gè)對象銷毀時(shí)通知所有對其感興趣的對象,告訴它們:我死了,不要再來找我
但這種方式,我個(gè)人覺得有點(diǎn)復(fù)雜了
re: 基類角色之對象管理器 李現(xiàn)民 2009-07-02 18:02
@飯中淹
對于“也就是一個(gè)ID,一個(gè)KEY來索引一個(gè)對象”這種辦法,我想可以通過增加ID(我我的實(shí)現(xiàn)代碼是是index_t)的長度來代替,即定義:
typedef __int64 index_t; // 索引類型
我認(rèn)為效果是等價(jià)的。
re: 設(shè)計(jì)模式-觀察者模式 李現(xiàn)民 2009-03-19 10:18
程序有內(nèi)存泄漏;而且,如果pMouseA 在銷毀時(shí)不記得從Cat中刪除的話,會(huì)有內(nèi)存訪問錯(cuò)誤,我建議不要直接在Subject中保存指針。
re: C++同步鎖管理的一種方法 李現(xiàn)民 2009-03-05 12:57
這其實(shí)是一種很常見的手法
你的這個(gè)實(shí)現(xiàn)更像singleton,不過virtual proxy與singleton的確很像
re: std::map于vc6下的使用bug 李現(xiàn)民 2009-02-06 16:04
@goodname
謝謝, 我是不知道應(yīng)該這樣處理的,現(xiàn)在知道了
同樣感謝 Dancefire
re: 考慮用Macro替換Uncopyable 李現(xiàn)民 2008-10-28 11:48
不錯(cuò),很好的主意
@RichardHe
這個(gè),前面敘述中已經(jīng)說過了,“基本上是原版的別人的代碼”,汗一個(gè)
re: sort函數(shù) 李現(xiàn)民 2008-10-07 17:27
中數(shù),最好不要排序
re: 網(wǎng)上面試題疑問 李現(xiàn)民 2008-10-07 16:29
關(guān)于i++的問題,c++的與c#, java的計(jì)算規(guī)則不一樣,真搞不清楚為什么要考這樣的東西
re: VC6中沒有vsnprintf函數(shù) 李現(xiàn)民 2008-10-07 16:26
的確沒有,這也的確是個(gè)問題
@megax
這些是全局函數(shù),不是類函數(shù)
類函數(shù)的話,如果定義和聲明都寫在類中,默認(rèn)就是inline的
re: 如何在命令行下讀入一行輸入 李現(xiàn)民 2008-09-10 10:28
std空間下有一個(gè)全局的getline,不是cin的函數(shù),
std::string strRead;
std::getline(std::cin, strRead);
不用指定緩沖大小
對呀,模板方法,而且是在編譯期就解決了,不過很詭異
C++的四層境界
1。程序員。
有時(shí)被稱為藍(lán)領(lǐng),在C++開發(fā)小組扮演有用的角色,
但是遇到設(shè)計(jì)難題時(shí),需要高級程序員指導(dǎo)
2。高級程序員
與普通程序員的區(qū)別是,能獨(dú)立地解決大多數(shù)C++設(shè)計(jì)難題。
要達(dá)到這一層次需要至少經(jīng)過三個(gè)復(fù)雜的C++PROJECT,并積累了一些設(shè)計(jì)失敗的教
訓(xùn)。
經(jīng)過努力,大多數(shù)C++編程人員都能達(dá)到這一高級程序員的境界。
3。一個(gè)公司里的GURU
也就是常說的一軟件公司里的牛人,可稱為一個(gè)公司里的GURU,
他們拿著相當(dāng)高的薪水。,領(lǐng)導(dǎo)一個(gè)公司的技術(shù)設(shè)計(jì)。
這樣的人需要十年以上OO的經(jīng)驗(yàn)并經(jīng)歷多個(gè)大型軟件成功和失敗。
4。工業(yè)界的GURU
這樣人在所在的領(lǐng)域如雷貫耳,幾乎很少有公司能夠雇得起他們。
他們通常經(jīng)營著自己的咨詢公司。達(dá)到境界4的GURU們,幾乎在每天的空閑散步時(shí)間
里都在思考技術(shù)。
對大多數(shù)程序員來說,想達(dá)到他們的境界,是不現(xiàn)實(shí)的。
-------C++ FAQ
三位作者:
Cline : Internet offical Forum C++FAQ 主持人,給數(shù)千名C++工程師上過課,
計(jì)算機(jī)專業(yè)博士
Lomow: 高級機(jī)構(gòu)設(shè)計(jì)師,15年OO開發(fā)經(jīng)驗(yàn),計(jì)算機(jī)專業(yè)博士
Girou: 國際C++標(biāo)準(zhǔn)委員會(huì)成員,數(shù)學(xué)專業(yè)博士
@Herb
ws已經(jīng)正常構(gòu)造了,因此std::wcout無法輸出漢字的長度一點(diǎn)關(guān)系也沒有