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

首頁 > 編程 > C++ > 正文

C++中抽象類和接口的區別介紹

2020-01-26 16:19:42
字體:
來源:轉載
供稿:網友

1. 如果一個類B在語法上繼承(extend)了類A, 那么在語義上類B是一個類A.
2. 如果一個類B在語法上實現了(implement)接口I, 那么類B遵從接口I制定的協議.

使用abstract class的根本原因在于, 人們希望通過這樣的方式, 表現不同層次的抽象.
而interface的本質是一套協議. 在程序設計的發展中, 人們又發現接口可以用來表示對行為的抽象, 不過, 這只是interface的一種用法不是其本質.

理論結合實際才是最好的學習方式, 不過在這里, 我只想舉一些我見到過關于接口使用的反面教材:

1. 在接口中包含數據成員. 這幾乎肯定是錯的, 因為協議是規范是標準, 不應該跟具體實現有任何牽連, 也不應該給具體實現造成任何負擔.
2. C++中 delete 掉一個接口. 例如:

復制代碼 代碼如下:

class IInterface()
{
Public:
Virtual ~IInterface(){};

}

Class ClassImpl : public IInterface
{

}

Int main()
{
IInterface* pInterface = new ClassImpl();

delete pInterface;
}


從語法的角度和語言自身的角度來看, 這是可行的, 而且只要將接口的析構函數設置為virtual, 就能避免內存泄漏. 但我要說, 這不是語法和語言的問題, 而是從根本上就錯了. 因為接口是一套協議, 一套規范, 并不是實現. Delete 一個接口的代碼, 到底想要表達什么樣的語義? 如果一段代碼從語義上都說不通, 就不應該出現在程序中.
要在C++中表現接口的概念, 一種做法是這樣:
復制代碼 代碼如下:

class IInterface
{
public:
virtual void DoSomething() = 0;
}

// 不應當有析構函數, 因為從語義上說, 接口是不能delete的.


如果要delete, 只能delete一個類的實例:
復制代碼 代碼如下:

Class A
{
Public:
Virtual ~A();

Public:
Virtual void DoSomething() = 0;
}
Class B : public A
{

}
Int main()
{
A* pA = new B();

Delete pA;
}


我們可以這樣做, 因為pA對應的是一個實例, 我們可以在A這一層將其銷毀.
先舉個例子,方便大家理解,然后從例子中抽象概括出結理論。

比如,一家生產門的公司,需要先定義好門的模板,以便能快速生產出各種規格的門。
這里的模板通常會有兩類模板:抽象類模板和接口模板。

抽象類模板:這個模板里面應該包含所有門都應該具有的共同屬性(如,門的形狀和顏色等)和共同行為(如,開門和關門)。

接口模板:有些門可能需要具有報警和指紋識別等功能,但這些功能又不是所有門必須具有的,所以像這樣的行為應該放在單獨的接口中。

有了上面的兩類模板,以后生產門就很方便了:利用抽象類模板和包含了報警功能的接口模板就能生產具有報警功能的門了。同理,利用抽象類模板和包含了指紋識別功能的接口模板就能生產具有指紋識別功能的門了。

總之:抽象類用來抽象自然界一些具有相似性質和行為的對象。而接口用來抽象行為的標準和規范,用來告訴接口的實現者必要按照某種規范去完成某個功能。

這是我自己的看法,歡迎大家和我探討這個問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲韩国日本中文字幕| 国产精品一区二区三区久久| 亚洲18私人小影院| 日韩69视频在线观看| 日韩欧美在线免费| 亚洲国产精品久久久久秋霞蜜臀| 成人两性免费视频| 日韩欧美在线观看| 亚洲精品在线看| 亚洲国产精品美女| 亚洲精品视频在线观看视频| 日韩中文av在线| 岛国视频午夜一区免费在线观看| 国产精品一区二区三区在线播放| 日韩av电影国产| 色噜噜狠狠狠综合曰曰曰88av| 亚洲人成网7777777国产| 亚洲国产精品久久久久秋霞不卡| 亚洲激情视频网站| 色琪琪综合男人的天堂aⅴ视频| 日韩精品中文字幕视频在线| 精品福利在线视频| 精品露脸国产偷人在视频| 在线亚洲午夜片av大片| 欧美激情综合亚洲一二区| 久久精品国产一区二区三区| 久久久久久久久久久免费精品| 自拍视频国产精品| 欧美多人乱p欧美4p久久| 日韩电影中文字幕一区| 亚洲日本aⅴ片在线观看香蕉| zzijzzij亚洲日本成熟少妇| 一个人看的www久久| 久久成人av网站| 国内精品久久久久久久| 亚洲毛片在线观看| 91av视频在线| 欧美日韩一区二区在线播放| 久久91亚洲精品中文字幕奶水| 懂色av影视一区二区三区| 亚洲精品999| 91在线高清视频| 91国内免费在线视频| 久久九九国产精品怡红院| 成人黄色在线播放| 日本不卡高字幕在线2019| 午夜精品理论片| 亚洲第一综合天堂另类专| 中文字幕亚洲专区| 成人国产精品一区| 国产精品免费观看在线| 久久国产精品久久久久久| 亚洲精品国精品久久99热一| 久久成人精品电影| 久久男人的天堂| 国产一区二区三区网站| 揄拍成人国产精品视频| 国产美女精品视频| 久久久女人电视剧免费播放下载| 国产精品色悠悠| 国产精品精品久久久久久| 亚洲欧美日韩天堂一区二区| 欧美视频在线观看 亚洲欧| 91精品国产91久久久久福利| 成人观看高清在线观看免费| 久久国产精品网站| 91国偷自产一区二区三区的观看方式| 亚洲va久久久噜噜噜久久天堂| 亚洲国产精品电影| 色婷婷**av毛片一区| 欧美日韩免费一区| 久久成人亚洲精品| 九九热这里只有精品免费看| 欧美刺激性大交免费视频| 亚洲国产精品久久| 国产精品高清免费在线观看| 日日摸夜夜添一区| 久久久91精品国产| 精品免费在线视频| 精品国产一区二区三区久久| 亚洲成人精品在线| 亚洲女人被黑人巨大进入| 日韩精品电影网| 亚洲成人激情视频| 久久精品2019中文字幕| 欧美伊久线香蕉线新在线| 青草青草久热精品视频在线观看| 一区二区欧美激情| 日韩av网站大全| 国产91精品久久久久久久| 欧美日韩一区二区免费在线观看| 亚洲理论在线a中文字幕| 国产精品美女久久久久久免费| 亚洲人成在线免费观看| 亚洲黄色在线看| 91av在线免费观看视频| 日韩亚洲一区二区| 精品无人区太爽高潮在线播放| 欧美激情亚洲综合一区| 法国裸体一区二区| 欧美激情按摩在线| 欧美一级黑人aaaaaaa做受| 欧美裸体视频网站| 91人人爽人人爽人人精88v| 国产精自产拍久久久久久蜜| 欧美国产日韩二区| 成人在线小视频| 2019中文在线观看| 欧美成人精品三级在线观看| 亚洲偷欧美偷国内偷| 日本人成精品视频在线| 国产色婷婷国产综合在线理论片a| 国内伊人久久久久久网站视频| 国产日本欧美在线观看| 国产欧美日韩中文字幕| 欧美亚洲国产成人精品| 91亚洲国产成人精品性色| 国产精品久久国产精品99gif| 97在线日本国产| 亚洲精品久久久一区二区三区| 国产精品wwwwww| 欧美在线欧美在线| 国产精品男人爽免费视频1| 亚洲国产精品成人一区二区| 精品色蜜蜜精品视频在线观看| 一区二区三区www| 亚洲人成在线一二| 国产精品久久激情| 久久av.com| 亚洲美女自拍视频| 色综合天天综合网国产成人网| www.日韩av.com| 国产第一区电影| 国产999在线观看| 97免费视频在线| 国产欧美最新羞羞视频在线观看| 在线电影中文日韩| 91精品久久久久久久久久入口| 欧美日韩在线免费观看| 中国人与牲禽动交精品| 亚洲aa在线观看| 日韩精品在线播放| 亚洲欧美日韩成人| 国产在线精品一区免费香蕉| 欧美黑人巨大xxx极品| 国产97在线亚洲| 欧美性开放视频| 亚洲精品久久久久中文字幕欢迎你| 欧美激情性做爰免费视频| 欧美日韩亚洲一区二区三区| 亚洲精品456在线播放狼人| 精品国产乱码久久久久久天美| 欧美日韩美女在线| 欧美尤物巨大精品爽| 4444欧美成人kkkk| 97婷婷涩涩精品一区| 中日韩美女免费视频网站在线观看| 亚洲国产精品久久久久| 日韩成人激情视频| 欧美综合在线第二页| 亚洲自拍高清视频网站| 国产视频精品久久久| 精品福利一区二区| 日韩欧美aⅴ综合网站发布|