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

醬壇子

專注C++技術(shù) 在這里寫下自己的學(xué)習(xí)心得 感悟 和大家討論 共同進(jìn)步(歡迎批評(píng)?。。。?/p>

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

公告

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

常用鏈接

留言簿(19)

我參與的團(tuán)隊(duì)

搜索

  •  

積分與排名

  • 積分 - 389018
  • 排名 - 64

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

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

比如需要處理動(dòng)物,我們會(huì)這樣設(shè)計(jì)

????????????????????? ----->?? 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部分會(huì)被修改,Lizard的其他menber沒(méi)有被改變,這個(gè)是正常的部分賦值現(xiàn)象。

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

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

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

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

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

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

所以我們希望當(dāng)出現(xiàn)異型賦值的時(shí)候,operator = 能對(duì)此做一個(gè)判斷

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

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

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


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





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

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   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>
            国产伦精品一区二区三区视频黑人 | 亚洲欧洲日产国产网站| 亚洲综合国产精品| 亚洲在线观看免费| 久久经典综合| 免费日韩av| 亚洲成色www8888| 亚洲精选大片| 亚洲一区在线观看视频 | 亚洲日韩欧美视频一区| 亚洲精品免费网站| 久久九九精品99国产精品| 午夜精品成人在线| 亚洲国产另类久久精品| 亚洲人成人一区二区三区| 亚洲视频电影图片偷拍一区| 欧美一区二区三区免费视频| 欧美大胆人体视频| 亚洲天堂免费在线观看视频| 午夜精品在线看| 麻豆久久婷婷| 夜夜嗨av一区二区三区中文字幕| 亚洲免费综合| 牛人盗摄一区二区三区视频| 欧美天天在线| 在线精品亚洲| 欧美一区二区三区四区夜夜大片| 国产伦一区二区三区色一情| 精品成人国产| 欧美精品一区二区在线播放| 国产精品自拍小视频| 亚洲精品免费看| 欧美中日韩免费视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲精品一区二区网址| 久久av一区二区三区| 欧美日韩免费一区二区三区视频| 国产日韩亚洲| 亚洲午夜精品一区二区| 欧美a级一区| 在线电影国产精品| 亚洲精品欧美在线| 欧美jizzhd精品欧美巨大免费| 91久久中文| 欧美一级大片在线免费观看| 欧美日韩日本国产亚洲在线| 亚洲成色999久久网站| 午夜精品偷拍| 一本久久青青| 欧美日本国产在线| 99re66热这里只有精品4| 蜜臀91精品一区二区三区| 亚洲欧美制服中文字幕| 国产精品第2页| 亚洲午夜电影在线观看| 最近中文字幕日韩精品| 欧美成人国产va精品日本一级| 国产亚洲精品激情久久| 国产精品丝袜91| 国产一区二区三区黄| 99热免费精品在线观看| 亚洲国产精品va| 久久久av水蜜桃| 国产亚洲一区二区精品| 午夜欧美理论片| 亚洲午夜激情网站| 在线亚洲激情| 日韩午夜剧场| 亚洲精品国产精品国自产观看浪潮| 久久综合婷婷| 亚洲国产二区| 最新成人av网站| 欧美日韩在线三区| 亚洲专区一区二区三区| 亚洲伊人伊色伊影伊综合网| 国产日韩欧美在线播放不卡| 国产精品高清在线| 欧美大片国产精品| 久久久天天操| 亚洲日韩欧美视频| 亚洲免费观看在线观看| 国产精品女人久久久久久| 久久se精品一区精品二区| 久久国产毛片| 91久久久久久| 亚洲视屏在线播放| 国产一在线精品一区在线观看| 老牛影视一区二区三区| 欧美激情在线观看| 午夜精品影院| 老司机67194精品线观看| 一本久久综合亚洲鲁鲁| 午夜精品久久久久久久久久久久| 一区二区三区在线不卡| 亚洲少妇自拍| 国产欧美精品日韩区二区麻豆天美| 亚洲黄色小视频| 欧美日韩免费观看一区三区| 翔田千里一区二区| 噜噜噜91成人网| 午夜久久美女| 免费一级欧美片在线观看| 西西裸体人体做爰大胆久久久| 久久综合99re88久久爱| 午夜视频久久久| 欧美激情导航| 久久久精品国产一区二区三区| 欧美经典一区二区三区| 久久亚洲欧美| 国产精品乱人伦一区二区 | 免费美女久久99| 欧美在线不卡| 国产欧美69| 在线免费观看欧美| 亚洲人成在线观看一区二区| 国产老女人精品毛片久久| 欧美国产一区二区在线观看 | 久久国产加勒比精品无码| 欧美电影在线| 91久久在线| 亚洲最黄网站| 亚洲人屁股眼子交8| 国产精品久久国产愉拍| 欧美a级在线| 国产一区二区三区免费在线观看| 亚洲免费在线视频| 欧美r片在线| 午夜精品视频| 亚洲精品在线一区二区| 亚洲大胆女人| 亚洲视频一区二区免费在线观看| 国内揄拍国内精品少妇国语| 中文av一区特黄| 在线一区欧美| 美女图片一区二区| 老司机67194精品线观看| 国产人成精品一区二区三| 宅男噜噜噜66一区二区66| 亚洲最新色图| 欧美日韩不卡| 一区二区三区免费观看| 亚洲特级毛片| 国产精品美女久久久久久久| 亚洲天堂久久| 欧美淫片网站| 国内外成人免费视频| 久久精品国产免费| 欧美a级片网站| 亚洲区免费影片| 韩国av一区二区| 在线观看欧美日韩| 午夜国产欧美理论在线播放| 亚洲欧美日韩综合aⅴ视频| 欧美丝袜一区二区三区| 亚洲少妇诱惑| 久久久国产精品亚洲一区| 狠狠干成人综合网| 老色鬼久久亚洲一区二区| 亚洲国产精品成人精品| 一区二区三区视频在线观看| 国产精品高潮在线| 欧美综合二区| 亚洲精品视频啊美女在线直播| 欧美三级中文字幕在线观看| 亚洲人成网站777色婷婷| 一二三区精品| 国产视频丨精品|在线观看| 麻豆国产精品va在线观看不卡| 亚洲激情一区二区| 在线亚洲美日韩| 国产欧美综合在线| 久久免费视频网| 亚洲第一中文字幕在线观看| 久久综合久久综合久久综合| 亚洲国产成人久久综合一区| 亚洲一区网站| 伊人色综合久久天天| 欧美精品久久久久久久久老牛影院| 宅男噜噜噜66一区二区66| 久久―日本道色综合久久| 亚洲精品一区二区三| 国产精品久久福利| 久久综合九色综合欧美狠狠| 一区二区高清视频| 欧美福利视频网站| 欧美亚洲网站| 一本色道久久综合亚洲精品小说| 国产日韩专区| 欧美视频一区在线观看| 久久婷婷蜜乳一本欲蜜臀| 亚洲欧美国产77777| 亚洲国产精品女人久久久| 久久国产精品99久久久久久老狼| aa成人免费视频| 你懂的网址国产 欧美| 久久久av毛片精品| 日韩视频免费大全中文字幕| 国产视频观看一区| 欧美日本韩国一区| 久久亚洲精品一区二区|