青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

醬壇子

專注C++技術(shù) 在這里寫下自己的學習心得 感悟 和大家討論 共同進步(歡迎批評!!!)

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  66 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一偉 湖南商學院畢業(yè) 電子信息工程專業(yè)

常用鏈接

留言簿(19)

我參與的團隊

搜索

  •  

積分與排名

  • 積分 - 389015
  • 排名 - 64

最新隨筆

最新評論

閱讀排行榜

評論排行榜

如果我們現(xiàn)在在設(shè)計一個項目

比如需要處理動物,我們會這樣設(shè)計

????????????????????? ----->?? lizard class???? 蜥蜴
class animal
?????????????????????? -----> chicken class?? 雞

class ?Animal
{
????pubulic:
?????????Animal
& ? operator ? = ?( const ?Animal & ?rhs);
?????????
}
;
class ?Lizard: public ?Animal
{
?????
public :
?????????Lizard
& ? operator = ( const ?Lizard & ?ths);
?????????.
}
;
class ?Chichen: public ?Animal
{
??????
public :
??????Chichen
& ? operator = ( const ?Chichen & ?rhs);
??????
}
;

現(xiàn)在我們只演示操作符

現(xiàn)在如果有這樣一短代碼
Animal* p1 = new Lizard;
Animal* p2 = new Chichen;

如果執(zhí)行p1 = p2,只有p1的animal部分會被修改,Lizard的其他menber沒有被改變,這個是正常的部分賦值現(xiàn)象。

但是實際上我們不希望結(jié)果是這樣,
如果要執(zhí)行繼承類的operator = 的話,你得在base class 中抽象"="
virtual Animal&?operator?=?(const?Animal&?rhs);
同樣在繼承類中

virtual ?Chicken&?operator=(const?Chicken&?ths);
virtual ?Lizard&??? operator=(const Lizard&?ths);????? //virtual 在繼承類中可以省略,但是仍然是抽象的,只是有了實現(xiàn)體而已

這樣我們就能實現(xiàn)p1 = p2(我們把一只雞賦給了蜥蜴,典型的異型賦值);

雖然在 C++中有強烈的型別轉(zhuǎn)換,但是這在C++中是允許的,Animal的virtual "="為異型賦值打開了大門

我們希望當
Animal* pAnimal1= new Lizard;
Animal* pAnimal2= new Lizard;
...
*pAnimal1 =? *pAnimal2;?? //呵呵,將蜥蜴給了蜥蜴

但是我們不希望這樣的事情發(fā)生
Animal* pAnimal1= new Lizard;
Animal* pAnimal2= new Chichen;
...
*pAnimal1 =? *pAnimal2;?? //呵呵,將小雞給了蜥蜴
編譯器不能發(fā)現(xiàn)問題,但是在運行期會造成錯誤。

所以我們希望當出現(xiàn)異型賦值的時候,operator = 能對此做一個判斷

現(xiàn)在我們能通過 dynamic_cast實現(xiàn)我們的愿望
Lizard& Lizard::operator = (const Animal&? ths)
{
??????const Lizard& rhs_liz = dynamic_cast<const Lizard&>(rhs);
??????//如果轉(zhuǎn)型失敗,dynamic_cast會向外拋出Bad_cast exception
}
這個操作是可行的,但是對于每次賦值操作都是昂貴復(fù)雜的似乎有點不劃算。
所以我們可以重載下operator = ,只對右邊參數(shù)為多態(tài)形式的指針或引用做dynamic_cast的處理
而對于同型別的指針或者引用 我們則只需要進行copy,copy而已。
so ,我們得有這個:
Lizard& operator = (const Lizard& rhs);

然而對于這樣的設(shè)計,Effective C++提出了疑問,某些編譯器并沒有支持dynamic_cast,還有對于exception的捕獲大多數(shù)程序員并不是太注重這樣的設(shè)計。所以并不是最好的解決上面部分賦值的辦法。

Effective C++提供的模式是
???????????????????????????????????????????????????????????------> Lizard
再申請另外一個類AbstractAnimal???------> Animal
???????????????????????????????????????????????????????????------>?Chicken
讓AbstrctAnimal成為一個抽象類,一個無法被實體化的類,沒有任何menber function。Lizard,Animal和Chicken都繼承于AbstractAnimal.
這個設(shè)計禁止了部分賦值和異型賦值,derive class同樣可以調(diào)用base class? 的operator =;
AbstractAnimal 含有一個抽象類的必須----至少一個純虛函數(shù)。這里設(shè)計成他的Destructor.呵呵,這樣設(shè)計也是為了能很好的支持這些類的多態(tài)性,這個就不多說了。


<附:文章非轉(zhuǎn)載,內(nèi)容雖然簡單,請不要砸磚頭?????????????????????????? 醬菜 2007.02.03凌晨12.30>





posted on 2007-02-04 00:31 @王一偉 閱讀(928) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品视频久久| 午夜精品久久久久久| 99国产精品99久久久久久粉嫩| 黄色在线一区| 精品成人一区二区| 亚洲国产成人一区| 亚洲乱码国产乱码精品精可以看 | 欧美日韩国产探花| 欧美日韩精品国产| 国产精品毛片大码女人| 国产婷婷色一区二区三区在线| 国产亚洲一区二区精品| 国产一区二区在线观看免费播放 | 亚洲国产欧美日韩| 免播放器亚洲一区| 欧美精品v国产精品v日韩精品| 欧美精品日本| 国产精品久久久久77777| 国产精品卡一卡二| 影音先锋日韩资源| 亚洲天堂偷拍| 免费观看30秒视频久久| 亚洲电影在线看| 亚洲日本va在线观看| 亚洲永久精品大片| 免费看av成人| 国产精品日韩在线观看| 亚洲国产欧美在线| 久久久久99| 亚洲乱码国产乱码精品精98午夜| 亚洲欧美综合一区| 欧美绝品在线观看成人午夜影视| 国产色婷婷国产综合在线理论片a| 亚洲精品国久久99热| 欧美中在线观看| 亚洲国产精品尤物yw在线观看| 亚洲影院高清在线| 欧美日韩国产欧| 在线看成人片| 欧美呦呦网站| 一区二区高清在线观看| 久久全国免费视频| 国产亚洲精品久| 妖精视频成人观看www| 美女诱惑黄网站一区| 亚洲专区免费| 国产精品久久久久久亚洲调教 | 黄色成人精品网站| 午夜天堂精品久久久久| 亚洲片区在线| 免费在线观看日韩欧美| 国内精品视频一区| 欧美在线免费观看视频| 日韩一级在线| 欧美区二区三区| 亚洲激情在线观看| 欧美国产日韩xxxxx| 久久久久久久久久码影片| 国产欧美va欧美不卡在线| 亚洲伊人伊色伊影伊综合网 | 欧美国产日韩一区二区三区| 久久精品综合| 精品成人免费| 久久亚洲视频| 久久久久久久久伊人| 很黄很黄激情成人| 免费观看30秒视频久久| 亚洲激情在线观看| 亚洲激情视频网站| 欧美激情自拍| 欧美gay视频激情| 亚洲精品美女91| 久久综合狠狠综合久久综合88| 亚洲欧美区自拍先锋| 国产日韩精品一区| 久久久久成人精品| 免费成人av在线| 一区二区三区高清在线| 夜夜嗨av一区二区三区免费区 | 国产女精品视频网站免费| 午夜日韩在线观看| 久久国产日韩| 亚洲黄色一区| 亚洲天堂av电影| 国产欧美一区二区三区沐欲| 久久久久久久久久久久久9999| 久久综合99re88久久爱| 亚洲激情社区| 在线亚洲观看| 国自产拍偷拍福利精品免费一| 欧美jizz19性欧美| 欧美日本亚洲| 久久久久久久综合| 欧美成人精品h版在线观看| 亚洲图片在区色| 欧美中文在线观看国产| 亚洲精一区二区三区| 亚洲一区免费看| 最新亚洲电影| 亚洲欧美精品中文字幕在线| 黄色日韩网站| 99国产欧美久久久精品| 国产亚洲精品bt天堂精选| 欧美国产日韩一区二区在线观看| 欧美性jizz18性欧美| 久久久91精品| 欧美日韩在线看| 嫩草影视亚洲| 欧美视频一区在线观看| 久久久另类综合| 欧美黄色aaaa| 久久综合久久综合这里只有精品 | 欧美一区二区三区的| 麻豆成人91精品二区三区| 亚洲一区在线免费| 欧美mv日韩mv国产网站app| 欧美亚洲三区| 欧美精品在线免费观看| 浪潮色综合久久天堂| 国产精品乱人伦一区二区| 亚洲成色777777女色窝| 国产欧美91| 亚洲女同在线| 亚洲欧美日韩在线综合| 欧美电影在线观看完整版| 麻豆精品91| 一区二区三区无毛| 亚洲欧洲免费视频| 久久综合五月| 国产日韩欧美日韩大片| 亚洲日本欧美日韩高观看| 国内精品视频在线观看| 午夜欧美精品久久久久久久| 亚洲一品av免费观看| 欧美人与禽猛交乱配| 亚洲高清免费视频| 亚洲高清视频一区二区| 久久女同精品一区二区| 久久久精品一品道一区| 国产午夜精品在线| 欧美国产精品专区| 亚洲第一级黄色片| 亚洲精品国产视频| 欧美理论视频| 日韩视频在线观看国产| 99re热这里只有精品视频| 欧美xart系列高清| 亚洲精品系列| 在线视频中文亚洲| 国产精品视频一| 久久国产精品久久久| 另类av一区二区| 最新国产乱人伦偷精品免费网站 | 亚洲欧洲精品一区| 欧美日韩国产成人在线观看| 91久久精品美女| 一区二区三区波多野结衣在线观看| 欧美日韩免费观看一区| 亚洲一二三区在线观看| 久久精品1区| 亚洲高清视频中文字幕| 欧美日本一区| 欧美一区二区三区精品电影| 久久婷婷国产综合尤物精品| 亚洲国产一区在线| 欧美午夜剧场| 久久九九热re6这里有精品| 亚洲国产欧美国产综合一区| 亚洲性夜色噜噜噜7777| 国内精品亚洲| 欧美日韩xxxxx| 久久国产精品高清| 在线视频亚洲| 欧美高清在线| 香蕉视频成人在线观看| 亚洲国产专区校园欧美| 国产精品久久夜| 免费看的黄色欧美网站| 亚洲神马久久| 欧美丰满少妇xxxbbb| 亚洲综合欧美日韩| 亚洲国产毛片完整版| 国产精品久久久久91| 欧美成人网在线| 欧美伊人久久久久久久久影院 | 校园激情久久| 最新成人在线| 久久嫩草精品久久久久| 亚洲开发第一视频在线播放| 国产日产高清欧美一区二区三区| 欧美91视频| 久久精品视频网| 亚洲欧美另类综合偷拍| 亚洲精品一二三区| 亚洲免费在线电影| 亚洲一区二区三区涩| 蜜臀va亚洲va欧美va天堂| 亚洲一区二区欧美| 日韩视频在线观看| 亚洲国产日韩欧美在线99 |