?如果上帝是程序員,我們每個人不用說了,肯定是人的每個實例,但是上帝會把人定義為接口呢還是類?
究竟我們是繼承了人這個基類,還是實現了人的接口?人妖這個類怎么就能變過來了?雙胞胎怎么生成的?連體嬰兒呢?
我的看法是:
人是類, 而不是接口, 有些東西人是天生就有的, 因此人應該是類。
人妖屬于保護繼承, 隱藏了一些細節, 同時也覆蓋了某些函數. 既然是protected繼承,因此你不能直接將他/她當人看,但是他/她內部可能使用了一些using指令暴露出一些從人繼承得到的方法及屬性, 同時由于是繼承,因此他/她也覆蓋了幾個虛擬函數來符合自己的需要。
還有一種看法就是人妖分別從人類和妖類多重繼承, 不過仍然必須是保護繼承. 否則可以輕易的轉型到人類指針,讓你大吃一驚.總之,在人妖這個問題上看法比較多。
雙胞胎和其他人一樣沒有區別, 僅僅是產生的方式是一次兩個, 因此也和普通人一樣從基類人派生, 不過構造函數是私有的,你必須通過一個Factory來產生, 同時, 返回值不是單個人, 而是一個std::pair.
多胞胎? 同樣, 不過這個Factory可能返回一個vector了。
連體嬰兒屬于比較高級用法, 采用virtual繼承的方式, 因此共享同一個基類人。
提醒一下就是, 到目前為止, 人基類在private中宣告但是沒有定義拷貝構造函數和賦值函數, 因此是無法拷貝的。
有人嘗試通過外部的手法clone人, 目前以"C++"的技術, 還不能很好實現。
究竟我們是繼承了人這個基類,還是實現了人的接口?人妖這個類怎么就能變過來了?雙胞胎怎么生成的?連體嬰兒呢?
我的看法是:
人是類, 而不是接口, 有些東西人是天生就有的, 因此人應該是類。
人妖屬于保護繼承, 隱藏了一些細節, 同時也覆蓋了某些函數. 既然是protected繼承,因此你不能直接將他/她當人看,但是他/她內部可能使用了一些using指令暴露出一些從人繼承得到的方法及屬性, 同時由于是繼承,因此他/她也覆蓋了幾個虛擬函數來符合自己的需要。
還有一種看法就是人妖分別從人類和妖類多重繼承, 不過仍然必須是保護繼承. 否則可以輕易的轉型到人類指針,讓你大吃一驚.總之,在人妖這個問題上看法比較多。
雙胞胎和其他人一樣沒有區別, 僅僅是產生的方式是一次兩個, 因此也和普通人一樣從基類人派生, 不過構造函數是私有的,你必須通過一個Factory來產生, 同時, 返回值不是單個人, 而是一個std::pair.
多胞胎? 同樣, 不過這個Factory可能返回一個vector了。
連體嬰兒屬于比較高級用法, 采用virtual繼承的方式, 因此共享同一個基類人。
提醒一下就是, 到目前為止, 人基類在private中宣告但是沒有定義拷貝構造函數和賦值函數, 因此是無法拷貝的。
有人嘗試通過外部的手法clone人, 目前以"C++"的技術, 還不能很好實現。