我寫C 喜歡用繼承有問題麼?

時間 2021-05-06 21:38:50

1樓:bear

沒有問題,不要聽有些人胡說八道

拿timer舉例只能說明他們沒有找到好的實現方式

這個可參見我即將在github上開源的corelooper

2樓:

繼承啊,這玩意當時就覺得,C++就跟物理世界似的,最根上的類就是最原始的粒子,然後在這個基礎上一層層繼承下去,然後就形成乙個美好的現實世界了……

不過,現實世界的動植物(生物)是需要進化的,所以,除了繼承還有基因突變呢,C++沒這機制。

最終呢,你會得到乙個完美的C++程式世界……拭目以待吧。

3樓:Chr1sL1

你有侵入式得雙鏈表,就可以通過鍊錶結構的在timer中的位址偏移拿到timer物件的指標了。當然這是C語言開發的慣用做法。

C++的經典做法是煉表裡儲存timer虛基類的指標,就要用到繼承。

4樓:Irons Du

NPC和Monster都不是Timer,所以不要用繼承。

其次,盡量使用智慧型指標,讓NPC和Monster繼承 std::enable_shared_from_this ,不要在lambda裡捕獲this裸指標,就不用擔心訪問已經無效的物件了。

更新:之前手機上回答完美錯過了 removeTimer。

題主很不錯,能考慮到從設計層面來自動管理資源,避免手工管理帶來的問題。

其實我們可以用: std:;unique_ptr std::unique_ptr - cppreference.com。

比如我們把 std::unique_ptr作為 NPC或Monster的成員,那麼當它們析構的時候,就自然會析構Timer,然後在Timer的析構裡從TimerMgr裡remove自己。

不過用 std::unique_ptr 的話,你就只能把Timer放在乙個地方。

我倒是喜歡Timer::WeakPtr,因為可能在業務邏輯裡會把它放在多個地方,然後多個地方都可能因為某種邏輯主動呼叫 weakTimer->Cancel();

5樓:抄詩

大多數情況組合更合適

你這個timer組合更合適

就你目前情況的話建議實現乙個繼承Timer的DefaultTimer供他人組合使用,皆大歡喜,改動又不大,現有系統不受影響

6樓:飛翔的蝸牛

你寫的時候爽,但是維護的人比較麻煩。單一兩個繼承閱讀沒問題,但是一旦繼承很多,這個套這個那個new那個,閱讀起來非常麻煩。而且在需求發生變動的時候,比如刪減修改一些功能的時候,繼承會非常不好修改。

簡單來說,繼承會讓可讀性差,不容易修改維護。我的原則是一般盡量不使用繼承,除非需要進行多型的時候才進行繼承。

7樓:歐文韜

可以使用仿函式包一層就行了麼。比如我寫的這個O(1)的通用定時器 https://

你非要用繼承沒什麼不可以。無非就是設計模式比較老套而且適配相容性比組合的方式弱一點。

為什麼我用c 寫的遊戲那麼簡陋?

亂世 以前我也是這樣的,蹭著現在可以先接觸一下遊戲引擎方面的知識,現在主流的遊戲引擎是unity,適合做手機遊戲,單機遊戲,網路遊戲,指令碼語言為c 優點是學習簡單相對而言,對電腦效能要求低,手遊方面是主流,全平台遊戲都可以做。還有一些比較有名的遊戲引擎UE4,cocos creater。 泰勒柯西...

喜歡看書有問題麼?

yemdestiny 難道還有人不每天都看書的嗎,查理芒格先生被人說是長了兩條腿的書,讀書能和那些已經逝去的人交朋友。只要你別告訴我你喜歡看的是那些網遊就行了。 喬昌鵬 當然沒有問題,喜歡看書說明你有成為任何你想成為的人的可能,多一種機會,多一種改變,你要做的就是保持下去,不斷探索,成長,成才。 大...

我心理有問題麼

趣鴨APP 通過你講述的這些問題來看,你的困擾點主要集中在溝通和人際交往上。如果你真的認為自己在這方面需要增強呢,推薦一些書給你 非暴力溝通 少有人走的路 可以對你有幫助,你一定要按照上面的方法去多練習,不是讀過就算了。知乎 安全中心 在這裡你可以安全地說你的任何壓力和小秘密,不會有來自熟人的壓力,...