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

醬壇子

專注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>
            久久成人18免费观看| 亚洲一区二区三区视频| 美日韩精品视频| 久久国产高清| 亚洲国产日韩欧美综合久久| 亚洲激情在线视频| 欧美色精品天天在线观看视频| 亚洲永久免费av| 久久国产精品99久久久久久老狼| 亚洲第一黄色| aⅴ色国产欧美| 国产一区二区三区最好精华液| 美女视频网站黄色亚洲| 欧美风情在线观看| 午夜视频精品| 久久阴道视频| 亚洲一区综合| 久久久久久久久久久一区| 亚洲免费黄色| 香蕉av777xxx色综合一区| 亚洲国产高清在线观看视频| 亚洲人线精品午夜| 国产一区成人| 日韩一区二区久久| 好吊色欧美一区二区三区视频| 亚洲高清一区二区三区| 国产欧美韩日| 99精品欧美一区| 亚洲第一视频| 性8sex亚洲区入口| 亚洲视频在线观看一区| 久久一区激情| 久久爱另类一区二区小说| 欧美激情在线播放| 久久久国产成人精品| 欧美经典一区二区| 免费短视频成人日韩| 欧美国产综合一区二区| 亚洲欧美一区二区三区久久 | 日韩网站在线观看| 影音先锋久久久| 亚洲女人av| 亚洲欧美综合v| 欧美激情在线播放| 欧美高清你懂得| 国产在线高清精品| 午夜在线a亚洲v天堂网2018| 亚洲永久字幕| 国产精品成人在线| 99成人免费视频| 日韩写真视频在线观看| 欧美1区免费| 欧美韩日一区二区三区| 永久免费毛片在线播放不卡| 欧美一区二区福利在线| 欧美一区二区三区免费大片| 国产精品成人免费视频| 亚洲视频综合| 欧美一区二区三区喷汁尤物| 国产精品久在线观看| 在线中文字幕不卡| 亚洲欧美一级二级三级| 国产精品私人影院| 亚洲手机视频| 久久精品国产亚洲精品| 国产日韩欧美中文| 久久成人精品视频| 麻豆精品视频在线观看| 尤物精品在线| 免费在线成人| 日韩视频欧美视频| 午夜激情一区| 国产在线一区二区三区四区| 欧美在线观看你懂的| 女生裸体视频一区二区三区| 亚洲欧洲美洲综合色网| 欧美精品一区二区三区在线播放 | 亚洲美女中文字幕| 亚洲综合清纯丝袜自拍| 国产精品一区二区久激情瑜伽| 亚洲欧美日韩在线高清直播| 久久米奇亚洲| 日韩视频永久免费观看| 欧美性大战久久久久久久蜜臀| 午夜天堂精品久久久久| 蜜臀久久久99精品久久久久久| 亚洲高清自拍| 欧美色视频一区| 欧美亚洲综合另类| 亚洲国产三级网| 先锋影音网一区二区| 精东粉嫩av免费一区二区三区| 蜜臀a∨国产成人精品| 亚洲作爱视频| 免费av成人在线| 亚洲香蕉伊综合在人在线视看| 国产一区二区三区四区五区美女| 欧美成年网站| 亚洲欧美视频一区| 亚洲国产精品va在线看黑人动漫 | 久久久噜噜噜| 欧美久久久久久| 欧美暴力喷水在线| 亚洲免费在线看| 伊人久久男人天堂| 国产精品九九久久久久久久| 久久久久女教师免费一区| 在线视频欧美日韩精品| 女人天堂亚洲aⅴ在线观看| 性8sex亚洲区入口| 亚洲裸体在线观看| 黄色资源网久久资源365| 欧美日韩麻豆| 欧美aaa级| 久久国产精品色婷婷| 亚洲天堂网在线观看| 亚洲国产欧美在线| 蜜臀久久99精品久久久久久9 | 一本高清dvd不卡在线观看| 黄色一区二区三区| 国产欧美韩日| 国产精品久久7| 欧美日韩视频免费播放| 免费欧美日韩国产三级电影| 久久激情久久| 香蕉精品999视频一区二区| 亚洲视频综合在线| 日韩视频一区二区三区| 亚洲黄色在线看| 欧美国产日韩一区二区三区| 久久尤物视频| 久久亚洲精品一区二区| 久久久久国产一区二区三区四区| 亚洲欧美一区二区原创| 亚洲综合欧美日韩| 亚洲专区一二三| 亚洲欧美日韩国产成人| 亚洲在线免费视频| 午夜宅男久久久| 午夜精品视频| 久久精品国产精品| 久久天堂成人| 女人色偷偷aa久久天堂| 欧美激情a∨在线视频播放| 欧美国产一区二区三区激情无套| 美女视频黄 久久| 欧美国产视频在线| 亚洲人屁股眼子交8| 日韩网站在线| 亚洲欧美电影院| 欧美一区二区久久久| 久久久999| 欧美成人在线网站| 欧美日韩激情小视频| 国产精品亚洲视频| 韩国精品久久久999| 最新日韩在线| 亚洲一区二区三区四区视频| 亚洲欧美日韩在线一区| 久久精品日韩一区二区三区| 美女脱光内衣内裤视频久久影院 | 欧美激情一二三区| 亚洲国产精品高清久久久| 亚洲九九九在线观看| 亚洲女同精品视频| 蜜桃视频一区| 国产精品男女猛烈高潮激情 | 亚洲欧洲在线一区| 亚洲图片欧洲图片av| 久久国产精品高清| 亚洲国产成人porn| 亚洲午夜小视频| 卡一卡二国产精品| 国产精品国产三级国产专播品爱网| 久久国产福利| 小处雏高清一区二区三区| 美女在线一区二区| 国产精品嫩草影院av蜜臀| 精品999久久久| 亚洲视频一区二区在线观看| 久久精品一区二区国产| 亚洲国产欧美在线| 久久精品在线免费观看| 国产精品电影观看| 亚洲国产精品一区在线观看不卡| 一区二区三区视频在线 | 中文日韩电影网站| 另类激情亚洲| 亚洲一区二区精品| 美女图片一区二区| 国产午夜一区二区三区| 亚洲午夜精品网| 欧美成在线视频| 久久精品日韩欧美| 国产麻豆日韩| 亚洲欧美日韩国产一区二区| 亚洲福利在线观看| 麻豆91精品| 在线精品观看| 久久久噜噜噜久久中文字幕色伊伊|