亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++批評系列:繼承的本質

2019-11-17 05:20:23
字體:
來源:轉載
供稿:網友
  Eiffel和C++都提供了多繼續的機制。但java卻沒有,因為它認為多繼續會導致許多問題的出現。不過Java提供了接口(interface)作為一種替換機制,它類似于Objective C中的協議(PRotocol)。Sun宣稱接口可以提供多繼續所能提供的所有特性。   Sun所宣稱的“多繼續會帶來許多的問題”這個觀點是對的,尤其是在C++中用以實現多繼續的方法更能說明這一點。那些看起來似乎使用多繼續會比單繼續更簡單的理由,現在都以被證實是毫無意義。例如,如何制訂對于從兩個類之上繼續得到的具有相同名字的數據項之間的策略?它們之間是否兼容?假如是的話,那他們是否應該被合并成為一個實體?假如不兼容,那應該如何區分它們?……這樣的列表可以列出很長很長。   Java的接口機制也可以用以實現多繼續,但它也有一個很重要的不同之處(與C++相比):繼續中的接口必須是抽象的。由于使用接口并沒有任何的實作,這就消除了需要從不同實作之間選擇的可能。Java答應在接口中聲明具有常數字段。當需要多繼續時,他們就合并成為一個實體,這樣也就不會導致歧義的產生。但是,當這些常數具有不同的值時,又有什么會發生呢?   由于Java不支持多繼續,我們就不可以像在C++和Eiffel中那樣使用混合(mixin)了。混合是一種特性,它可以把從不同的類中得到的不同的非抽象的函數放到一起形成一個新的復雜的類。例如,我們可能希望從不同的源代碼中導入一些utility函數。然而,我們也可以通過使用組合而不是繼續來達到同樣的效果,因此,這也就不會對Java構成一個重要的攻擊了。   Eiffel在解決多繼續問題時并沒有導入一個單獨的接口機制。   有些人可能認為,相對于多繼續來說,單繼續更優雅一些。這是一個很非凡的觀點。   BETA [Madsen 93]就屬于認為“多繼續不優雅”的那一種:“Beta中沒有多繼續,這主要是因為(對于多繼續)缺乏一個深刻的理論上的理解,并且當前的(對于多繼續的)建議在技術上看來也非常復雜”。他們引用了Flavors(一種可以將類混合在一起的語言)為證據。與Madsen相比,Flavors中的多繼續與其順序有關,也就是說,繼續自(A,B)和繼續自(B,A)是不一樣的。   Ada95是另一種不支持多繼續的語言。Ada95支持單繼續,并把它叫做標記類型擴展(tagged type extension)。   另外一些人認為,對于某些非凡模型下的問題,多繼續可以提供優雅的解法,因此為之付出的努力也是值得的。雖然上面所列出的關于多繼續的問題列表并不完善,它仍然顯示:與多繼續相關的問題是可以被系統地辨識出來的,而一旦問題被確認,它們也就可以被優雅地解決。當[Sakkinen 92]對于多繼續研究到達一個很深的程度后,它就得出了上述定義。   Eiffel中采用的方法是,多繼續會引發一些有趣的且有挑戰性的問題,然后再優雅地解決它們。程序員所需做的所有決定都被限制在類的繼續子句中。它包括使用renaming來保證眾多從繼續中得來的同名特性最終成為具有不同名字的特性,對于繼續而來的特性所施展的新的eXPort策略:redefining和undefining,以及用來消除歧義的select。在所有的情況下,編譯器都會為我們做好這一切,為了使得語義清楚而不管是選擇使用fork或是join,程序員都具有完全的控制權。   C++中相對Eiffel來說有著另外一種不同的用于消除歧義的機制。在Eiffel中,在renames子句中,特性間必須有著不同的名字。在C++中,可以使用域解析操作符’::’來區分成員。Eiffel的做法好處在于,歧義在聲明中就被消除掉了。Eiffel的繼續子句相對C++的來說要復雜不少,但它的代碼也顯得更簡單,更穩固,并更具彈性。這也就是聲明方法與操作符方法相比的好處所在。在C++中,每次當我們碰到在多個成員間具有歧義時,我們必須在代碼中使用域解析操作符。這經使得代碼變得混亂不堪,影響其延展性,假如有其他地方的改變會影響歧義時,我們可能就需要在歧義可能出現的每個地方改變已有的代碼。   依照[Stroustrup 94]中12.8節所說,ANSI委員會考慮過使用renaming,但是這個提議被委員會中的一個成員所阻塞掉了,他堅持讓委員會中的其他成員用兩周時間來好好地考慮這個問題。在12.8節中給出的例子顯示了在沒有顯示的renaming的前提下,如何做可以得到同樣的效果。問題在于,假如這都需要那些專家們使用兩周來考慮如何實現,那留給我們的空間又有多少呢?   域解析操作符并不只是被用來消除多繼續所帶來的歧義。由于設計良好的語言可以避免歧義的出現,因此域解析操作符也就是一個丑陋的,加深復雜性的實作手法。   在C++中,“如何來聲明多繼續中的父類們”是一個很復雜的問題。它影響到了建構函數被調用的次序,當程序員確實想從子類轉到父類時也會導致問題的出現。然而,我們也可以把這個稱為不好的程序設計風格。   C++和Eiffel的另一個不同之處在于直接的重復繼續,Eiffel中答應:  class B inherit A, A end   但   class B : public A, public A { };   卻不被C++認可。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧洲日本专区| 久热精品视频在线观看| 久久99青青精品免费观看| 国产精品视频免费在线| 美女视频久久黄| 久久久这里只有精品视频| 日韩精品高清在线| 欧美成人久久久| 高清在线视频日韩欧美| 久久天天躁日日躁| 国产精品一区二区三区久久| 国色天香2019中文字幕在线观看| 成人在线播放av| 亚洲成成品网站| 欧美午夜电影在线| 亚洲精品小视频在线观看| 精品国产一区二区三区久久久| 精品久久香蕉国产线看观看gif| 日韩三级成人av网| 亚洲无限乱码一二三四麻| 亚洲欧美国产va在线影院| 欧美激情在线狂野欧美精品| 怡红院精品视频| 国产亚洲aⅴaaaaaa毛片| 国产精品女视频| 91免费版网站入口| 亚洲激情在线视频| 欧美日韩国产精品| 成人网在线视频| 亚洲少妇激情视频| 在线观看国产欧美| 日韩美女在线播放| 日韩中文字幕视频在线观看| 久久精品99国产精品酒店日本| 正在播放欧美一区| 国产情人节一区| 中文字幕久热精品在线视频| 日韩精品免费一线在线观看| 91精品久久久久久久久久久久久久| 2021久久精品国产99国产精品| 日本久久亚洲电影| 一区二区三区www| 韩国一区二区电影| 6080yy精品一区二区三区| 国产91在线高潮白浆在线观看| 国产亚洲精品激情久久| 91在线网站视频| 黄色成人在线播放| 欧美性猛交xxxx| 日韩精品在线免费播放| 日韩毛片中文字幕| 中文字幕视频一区二区在线有码| 久久久精品亚洲| 欧美在线观看日本一区| 欧美在线视频观看免费网站| 国产精品日韩精品| 26uuu日韩精品一区二区| 国产玖玖精品视频| 国产精品视频在线播放| 97av在线播放| 日韩国产一区三区| 久久99热精品| 国产欧美一区二区三区久久人妖| 色综合久久中文字幕综合网小说| 欧美二区乱c黑人| 亚洲国产精品推荐| 97精品国产91久久久久久| 亚洲天堂开心观看| 日本午夜在线亚洲.国产| 性色av一区二区三区| 欧美香蕉大胸在线视频观看| 午夜精品免费视频| 日韩av最新在线| 不卡毛片在线看| 91久久夜色精品国产网站| 国产精品视频一区二区三区四| 日韩在线中文字| 中文字幕国产亚洲2019| 久久久久久久久久久免费| 国产精品wwww| 欧洲成人午夜免费大片| 91麻豆桃色免费看| 国产成人综合精品在线| 欧美性猛交丰臀xxxxx网站| 97人人爽人人喊人人模波多| 国产精品第七影院| 日韩av在线免费观看一区| 亚洲精品在线视频| 成人激情视频免费在线| 欧美福利视频网站| 国产精品69久久| 亚洲va码欧洲m码| 日韩精品免费在线视频| 亚洲天堂av在线免费| 欧美日韩一区免费| 国产精品a久久久久久| 国产精品爽黄69天堂a| 亚洲欧美日韩中文视频| 欧美日韩精品国产| 亚洲一区亚洲二区| 国产精品永久免费观看| 2020国产精品视频| 欧美俄罗斯乱妇| 欧美激情精品久久久久久大尺度| 亚洲天堂av图片| 欧美精品久久久久久久免费观看| 丝袜情趣国产精品| 国产一区二区美女视频| 欧美黑人国产人伦爽爽爽| 亚洲精品资源在线| 久久99国产精品久久久久久久久| 美女国内精品自产拍在线播放| 中文字幕亚洲综合久久| 激情懂色av一区av二区av| 久久久久成人精品| 亚洲国产日韩一区| 午夜精品久久久99热福利| 草民午夜欧美限制a级福利片| 日韩一区二区三区xxxx| 亚洲偷熟乱区亚洲香蕉av| 92国产精品久久久久首页| 自拍偷拍亚洲精品| 亚洲综合大片69999| 亚洲aa中文字幕| 高清欧美电影在线| 精品成人久久av| 91精品久久久久久久久久久久久久| 欧美精品久久一区二区| 成人在线视频网站| 日韩国产欧美精品一区二区三区| 韩国v欧美v日本v亚洲| 91免费在线视频| 国产一区视频在线播放| 夜夜嗨av一区二区三区四区| 国产成人精品免高潮在线观看| 日本sm极度另类视频| 91系列在线观看| 亚洲一区精品电影| 国产精品99免视看9| 久久伊人91精品综合网站| 亚洲精品视频网上网址在线观看| 亚洲一区二区三区四区视频| 久久色精品视频| 中文字幕亚洲图片| 日韩免费观看网站| 午夜精品久久久久久久99热| 91午夜理伦私人影院| 国产精品1234| 精品欧美aⅴ在线网站| 国产一区欧美二区三区| 一区二区三区视频免费在线观看| 国产精品久久久久久久久| 欧美日韩在线一区| 欧美—级a级欧美特级ar全黄| 日韩在线www| 96国产粉嫩美女| 国产亚洲精品va在线观看| 国产成人精品日本亚洲| 亚洲欧美在线免费观看| 欧美午夜影院在线视频| 久久久久久91香蕉国产| 午夜精品三级视频福利| 国产精品欧美日韩| 欧美日韩在线另类|