lannerK

          最好的設計都是用腳指頭想到的...

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            1 Posts :: 3 Stories :: 0 Comments :: 0 Trackbacks
          ?如果上帝是程序員,我們每個人不用說了,肯定是人的每個實例,但是上帝會把人定義為接口呢還是類?

            究竟我們是繼承了人這個基類,還是實現了人的接口?人妖這個類怎么就能變過來了?雙胞胎怎么生成的?連體嬰兒呢?

            我的看法是:

            人是類, 而不是接口, 有些東西人是天生就有的, 因此人應該是類。

            人妖屬于保護繼承, 隱藏了一些細節, 同時也覆蓋了某些函數. 既然是protected繼承,因此你不能直接將他/她當人看,但是他/她內部可能使用了一些using指令暴露出一些從人繼承得到的方法及屬性, 同時由于是繼承,因此他/她也覆蓋了幾個虛擬函數來符合自己的需要。

            還有一種看法就是人妖分別從人類和妖類多重繼承, 不過仍然必須是保護繼承. 否則可以輕易的轉型到人類指針,讓你大吃一驚.總之,在人妖這個問題上看法比較多。

            雙胞胎和其他人一樣沒有區別, 僅僅是產生的方式是一次兩個, 因此也和普通人一樣從基類人派生, 不過構造函數是私有的,你必須通過一個Factory來產生, 同時, 返回值不是單個人, 而是一個std::pair.

            多胞胎? 同樣, 不過這個Factory可能返回一個vector了。

            連體嬰兒屬于比較高級用法, 采用virtual繼承的方式, 因此共享同一個基類人。

            提醒一下就是, 到目前為止, 人基類在private中宣告但是沒有定義拷貝構造函數和賦值函數, 因此是無法拷貝的。

            有人嘗試通過外部的手法clone人, 目前以"C++"的技術, 還不能很好實現。
          posted on 2007-03-29 12:16 LANNERK-XCODER 閱讀(82) 評論(0)  編輯  收藏 所屬分類: 程序手記
          主站蜘蛛池模板: 隆林| 子长县| 江油市| 茌平县| 大方县| 白玉县| 上思县| 格尔木市| 田阳县| 手游| 扎囊县| 偃师市| 乌鲁木齐市| 剑川县| 香河县| 清徐县| 凤台县| 黑水县| 镇巴县| 阆中市| 安义县| 普兰店市| 石狮市| 娄底市| 莲花县| 沙河市| 黄龙县| 阳朔县| 新野县| 望都县| 电白县| 彰化市| 景洪市| 土默特右旗| 阜城县| 蒙城县| 安丘市| 镇康县| 巴彦淖尔市| 新泰市| 荥阳市|