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)  編輯  收藏 所屬分類: 程序手記
          主站蜘蛛池模板: 高阳县| 抚宁县| 四子王旗| 平舆县| 元谋县| 高州市| 承德市| 阳谷县| 金阳县| 德钦县| 赤城县| 中阳县| 潞城市| 乐清市| 勃利县| 时尚| 葵青区| 兴山县| 蛟河市| 新竹市| 水富县| 无棣县| 阿城市| 蚌埠市| 鹤岗市| 林周县| 鹰潭市| 石柱| 濮阳县| 镇赉县| 茂名市| 石河子市| 天峨县| 平安县| 衢州市| 莲花县| 宜宾市| 黄龙县| 镇安县| 德格县| 亚东县|