乙個對c 的批評

2021-09-30 01:58:46 字數 1873 閱讀 6669

繼承機制

一方面是為了擴充套件,但是另外一方面也是限制,

父類的設計必須完美,考慮到所有子類的可能情況。

這是乙個對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...