繼承機制
一方面是為了擴充套件,但是另外一方面也是限制,
父類的設計必須完美,考慮到所有子類的可能情況。
這是乙個對c++的批判。
認真考慮一下這個問題,這種情況只有在類關係交錯的時候才
會發生,情況的出現往往是這樣吧:
class a}; //father
class b:public a{};
class c:public a{};
... //some children
class framework
; };
至此,a的設計完全符合framework的需要。。。
現在出現framework2,要使用class a的乙個繼承,class x
其中需要用到乙個設計framework時候
沒有遇到過的功能,也就是說,這個功能class a並不提供,
或者說沒有對應的虛函式,那麼現在的選擇要麼是
frame2work放棄對a系列類的通用性,要麼放棄那個功能,
要麼。。。為a增加新的虛函式。。。
繼承機制
一方面是為了擴充套件,但是另外一方面也是限制,
父類的設計必須完美,考慮到所有子類的可能情況。
這是乙個對c++的批判。
認真考慮一下這個問題,這種情況只有在類關係交錯的時候才
會發生,情況的出現往往是這樣吧:
class a}; //father
class b:public a{};
class c:public a{};
... //some children
class framework
; };
至此,a的設計完全符合framework的需要。。。
現在出現framework2,要使用class a的乙個繼承,class x
其中需要用到乙個設計framework時候
沒有遇到過的功能,也就是說,這個功能class a並不提供,
或者說沒有對應的虛函式,那麼現在的選擇要麼是
frame2work放棄對a系列類的通用性,要麼放棄那個功能,
要麼。。。為a增加新的虛函式。。。
這個就是被批判的父類設計需要「**將來」的例子。。。
(我自己這麼想的,可能不是)
就我個人看呢,這個問題是出在「強行把非通用的情況整合到
通用情況」,本身就是乙個完美主義的自虐。。。
歸根又是乙個「動態型別判別問題」罷了。。。
這個問題說到底又是「層次問題」,如果用虛擬機器當然
可以搞定,多增加乙個層次罷了,
如果在c++上,我們同樣增加乙個層次比如為framework2
寫出兩個類,用子類去對待特殊的x,這個問題顯然也可以解決。
再兇悍一點,用visitor方法把類的判別工作仍給linker也可以。
好像每次都是看「你把這個工作」放在哪個部位的問題麼。。
這個就是被批判的父類設計需要「**將來」的例子。。。
(我自己這麼想的,可能不是)
就我個人看呢,這個問題是出在「強行把非通用的情況整合到
通用情況」,本身就是乙個完美主義的自虐。。。
歸根又是乙個「動態型別判別問題」罷了。。。
這個問題說到底又是「層次問題」,如果用虛擬機器當然
可以搞定,多增加乙個層次罷了,
如果在c++上,我們同樣增加乙個層次比如為framework2
寫出兩個類,用子類去對待特殊的x,這個問題顯然也可以解決。
再兇悍一點,用visitor方法把類的判別工作仍給linker也可以。
好像每次都是看「你把這個工作」放在哪個部位的問題麼。。
對乙個C程式的認識
include include define len 3 char buf len void print backward int pos int main 這是一段來自於書上的 執行的時候可以正常出結果,也就是把buf中的三個字元都列印出來,但是我卻不太能看懂程式的執行流程。後來看了幾遍之後認為是...
對乙個問題的解答
今天週日,陪老婆燙完頭髮回到家裡,仍然不忘開啟郵箱,一位朋友問了乙個問題,說想用sysfs實現cdev,我覺得倒是沒有什麼不可,因為sysfs畢竟是乙個核心和使用者空間通訊的介面,是個介面就可以被使用,我之所以敢打這個保票就是因為linux核心只提供機制而不提供任何策略,也就是說,只要你知道乙個機制...
對Boost any的乙個補充
boost any可以訪問任意型別,是用模板實現的,不過它設計得非常巧妙,其本身不是個模板,而是用乙個模板類的成員來進行資料儲存的,這使得我們可以寫出這樣的 boost any x std string hello cruel world x 123 x 3.1416f 但是如何把資料轉變回來呢?b...