亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

你不應繼承性?。狠d體

你不應繼承性?。狠d體

C++
米脂 2019-06-19 16:10:03
你不應繼承性病:載體好吧,這確實很難招供,但我現在確實有很大的誘惑要繼承。std::vector.我需要大約10個定制的矢量算法,我想讓他們成為向量的直接成員。但自然我也希望std::vector作為一個守法的公民,我的第一個想法是std::vector成員MyVector班級,等級。但是,我必須手動重新提供所有STD:VINVERV的接口。打字太多了。接下來,我考慮了私有繼承,因此,與其重新提供方法,不如編寫一堆using std::vector::member在公共部門。這也很乏味。我在這里,我真的認為我可以直接從std::vector,但在文檔中提供一個警告,說明不應以多形性方式使用該類。我認為大多數開發人員都有足夠的能力來理解,無論如何都不應該使用這種方法。我的決定完全站不住腳嗎?如果是,為什么?你能提供一個有額外成員的替代方案嗎?其實成員,但不會涉及重新鍵入所有向量的接口?我很懷疑,但如果你能的話,我會很高興的。另外,除了一些白癡可以寫一些類似的東西std::vector<int>* p  = new MyVector還有其他的嗎寫實使用MyVector會有危險嗎?通過說現實,我放棄了一些東西,比如想象一個函數,它把一個指向向量的指針.我已經陳述過我的案子了。我犯了罪?,F在該由你來原諒我了:)
查看完整描述

3 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

實際上,公共繼承沒有任何問題。std::vector..如果你需要這個,就這么做。

我建議只有當它是真的是必要的。只有當你不能用自由的函數做你想做的事情時(例如,應該保持某種狀態)。

問題是MyVector是一個新的實體。這意味著一個新的C+開發人員在使用它之前應該知道它是什么鬼東西。有什么區別std::vectorMyVector?哪一種更適合在這里和那里使用?如果我需要搬家呢std::vectorMyVector?我可以用一下嗎swap()還是不?

不要產生新的實體只是為了使一些東西看起來更好。這些實體(特別是如此常見的)不會生活在真空中。它們將生活在不斷增加的熵的混合環境中。


查看完整回答
反對 回復 2019-06-19
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

整個STL都是這樣設計的算法和容器是分開的。.

這導致了不同類型迭代器的概念:Const迭代器、隨機訪問迭代器等。

因此我建議你接受這個慣例設計您的算法時,它們不會關心它們正在處理的容器是什么-它們只需要執行操作所需的特定類型的迭代器。

另外,讓我把你轉到杰夫·阿特伍德的幾句好話.


查看完整回答
反對 回復 2019-06-19
  • 3 回答
  • 0 關注
  • 336 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號