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

醬壇子

專注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>
            一本色道久久88综合日韩精品| 精品91在线| 亚洲一区二区三区四区中文| 黄色国产精品一区二区三区| 久久精品亚洲乱码伦伦中文| 欧美一级成年大片在线观看| 激情成人av| 亚洲高清不卡av| 欧美激情片在线观看| 亚洲视频一区| 香蕉乱码成人久久天堂爱免费| 狠狠色伊人亚洲综合网站色| 欧美岛国在线观看| 国产精品成人在线| 久久午夜羞羞影院免费观看| 欧美二区在线| 香蕉久久夜色| 你懂的网址国产 欧美| 亚洲一区二区高清视频| 久久岛国电影| 一区二区三区三区在线| 欧美一区二区三区男人的天堂| 亚洲人成人一区二区三区| 亚洲色图在线视频| 在线成人www免费观看视频| 亚洲免费高清视频| 黄色成人在线免费| 在线综合欧美| 亚洲国产成人av| 亚洲一区影音先锋| 亚洲欧洲在线免费| 午夜精品在线观看| 一区二区三区四区国产| 久久国产福利国产秒拍| 一区二区av在线| 久久免费视频在线观看| 亚洲一区二区三区四区在线观看| 久久九九国产| 欧美一级大片在线免费观看| 欧美麻豆久久久久久中文| 久久久久一区二区三区| 国产精品第一页第二页第三页| 欧美三区在线视频| 99国产精品久久| 久久视频一区二区| 久久av红桃一区二区小说| 欧美日韩国产一区二区三区地区| 两个人的视频www国产精品| 国产精品人人做人人爽人人添| 亚洲激情成人在线| 亚洲国产高潮在线观看| 久久都是精品| 久久久久久久波多野高潮日日| 国产精品美女黄网| 一本一道久久综合狠狠老精东影业| 亚洲精品视频中文字幕| 玖玖视频精品| 免费观看不卡av| 在线观看日韩一区| 久久久欧美精品sm网站| 久久久久一区二区| 樱桃视频在线观看一区| 久久亚洲精品一区二区| 免费人成精品欧美精品| 亚洲国产二区| 欧美精品色网| 中国av一区| 欧美一区二区三区在线看 | 91久久精品网| 日韩一区二区高清| 欧美日本一区二区三区| 亚洲每日更新| 亚洲综合久久久久| 国产亚洲欧美日韩一区二区| 欧美一区二区私人影院日本 | 欧美高清视频www夜色资源网| 国产主播一区| 免费h精品视频在线播放| 亚洲国内精品| 亚洲愉拍自拍另类高清精品| 国产精品视频导航| 久久国产精品久久久久久| 欧美va日韩va| 这里只有精品视频| 国产酒店精品激情| 久久久久久电影| 亚洲区一区二| 欧美在线www| 亚洲第一中文字幕| 欧美日韩国产一区| 欧美亚洲一区| 亚洲日韩中文字幕在线播放| 亚洲一二三区在线| 红桃av永久久久| 欧美精品在线视频观看| 亚洲在线第一页| 欧美二区在线看| 亚洲一区二区三区精品在线 | 欧美成人中文字幕| 亚洲视频第一页| 老巨人导航500精品| 一本色道久久综合亚洲二区三区| 国产精品天天看| 农村妇女精品| 午夜视频在线观看一区二区| 欧美激情中文字幕乱码免费| 午夜在线成人av| 欧美日韩亚洲一区| 欧美成人小视频| 午夜精品久久久久影视 | 国产欧美一区二区三区在线看蜜臀| 久久影院午夜片一区| 亚洲视频在线观看一区| 亚洲第一区中文99精品| 小黄鸭精品aⅴ导航网站入口| 亚洲欧洲日本mm| 韩国福利一区| 国产精品视频免费观看| 欧美激情网友自拍| 另类天堂av| 久久精品夜夜夜夜久久| 亚洲一区二区精品在线观看| 亚洲日本黄色| 欧美成人综合在线| 久久亚洲一区二区三区四区| 亚洲欧美日韩人成在线播放| 99re在线精品| 日韩视频精品| 亚洲国产日韩一级| 伊人伊人伊人久久| 在线观看国产日韩| 国产在线高清精品| 国产欧美日韩一区二区三区| 国产精品www.| 欧美午夜在线视频| 欧美日韩视频在线一区二区| 欧美黄色日本| 欧美ed2k| 欧美顶级少妇做爰| 欧美成人影音| 欧美精品在欧美一区二区少妇| 蜜臀久久99精品久久久久久9| 久久久久综合网| 久久久人成影片一区二区三区| 欧美资源在线观看| 久久九九热免费视频| 久久久久久电影| 蜜臀av国产精品久久久久| 欧美激情性爽国产精品17p| 欧美激情视频一区二区三区在线播放 | 国产一区二区在线观看免费播放| 国产欧美日韩视频一区二区三区| 国产麻豆午夜三级精品| 国产视频精品xxxx| 伊人成人在线视频| 亚洲人www| 亚洲一区二区三区免费观看| 午夜精品久久久久久久久久久久 | 亚洲欧美在线免费观看| 欧美在线免费| 美女999久久久精品视频| 欧美福利视频在线| 欧美午夜寂寞影院| 国产欧美在线视频| 亚洲福利小视频| 99视频在线观看一区三区| 亚洲一区二区三区免费观看 | 老司机免费视频久久| 亚洲国产导航| 亚洲一区二区三区免费在线观看 | 欧美中文在线免费| 欧美成人伊人久久综合网| 一本色道久久综合亚洲精品高清 | 一区二区三欧美| 欧美永久精品| 老司机aⅴ在线精品导航| 欧美激情精品久久久久久蜜臀| 欧美乱人伦中文字幕在线| 欧美日在线观看| 尤物精品在线| 亚洲视频网在线直播| 久久精品欧洲| 99精品国产福利在线观看免费 | 欧美成年人网| 国产精品日韩久久久久| 亚洲娇小video精品| 欧美亚洲三区| 亚洲精品日韩在线观看| 久久精品国产欧美亚洲人人爽| 在线观看欧美视频| 99riav1国产精品视频| 蜜桃伊人久久| 亚洲手机视频| 欧美成人中文| 影音先锋久久精品| 欧美一区二区免费观在线| 亚洲精品久久| 久久精品国产免费观看| 国产农村妇女毛片精品久久麻豆| 999亚洲国产精|