六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

龍生9子----多態(tài)(續(xù)轉(zhuǎn))

[摘要]龍生九子----多態(tài)作者:HolyFire一龍生九子,子子皆不同。這個道理說的是世界上沒有兩個或兩個以上的事物是完全相同的,事物之間有相同相似的一面,當(dāng)然也有不同相異的一面。只有將不同的和相同的都考...
龍生九子

----多態(tài)

作者:HolyFire

一龍生九子,子子皆不同。這個道理說的是世界上沒有兩個或兩個以上的事物是完全相同的,事物之間有相同相似的一面,當(dāng)然也有不同相異的一面。只有將不同的和相同的都考慮進(jìn)來,才能完整的表達(dá)事物。

事物的屬性有著不同的一面。我們知道人感知事物的一個途徑是觀察,用對不同光線的反應(yīng)來識別物體,所以我們給出事物的一個屬性,顏色。有時候一些物體的顏色是固定的,白色的云,蔚藍(lán)的天空,碧綠的草地,不禁令人神游太虛。

但有些方面是不確定的,有一句話說道:“月有陰晴圓缺,人有悲歡離合”,這句話還不足以說明這個道理。我們中文里有時候會省略一些部分,“今天你吃了沒有?”吃的是什么,“早飯”,“下午茶”,“面包”,不知道。這里將吃東西抽象化了,這句話可以在早上說,中午說,晚上說,任何一個適合的時間段都可以說。感興趣的地方出現(xiàn)了,我們不知道吃什么東西,什么時候吃,但是卻可以使用它,簡要的表達(dá)一下你的問候。這樣簡單的設(shè)下伏筆,在具體需要的環(huán)境才用具體表現(xiàn)出來具體的用法,被廣泛運(yùn)用在生活中。“我砍!”表達(dá)了一個人要做的動作,具體砍什么,只有感興趣的人才會去關(guān)注。“我生病了。”表達(dá)了一個人的狀態(tài),具體生的什么病,不是人人都想知道的。

多態(tài)--就是指事物不同的方面

多態(tài)是一種復(fù)雜的應(yīng)用,要全面的闡述它很難,所以理解它的思想就成了重點(diǎn)。在不同情況下,秉承它的思想,用不同的方法實(shí)現(xiàn)多態(tài)。

還記得C++中的虛函數(shù)嗎,我在《后入為主----虛函數(shù)》中講過,虛函數(shù)可以動態(tài)改變,運(yùn)用這個特性就能實(shí)現(xiàn)我們的目的了。不同的語言使用不同的方法,實(shí)現(xiàn)的機(jī)制就是一個類型提供的接口可以改變。這樣就能體現(xiàn)不同這個思想了。

為了更好理解,我們用C++實(shí)現(xiàn)一個例子。

我們知道,要生活,就要工作,工作是人的社會行為,幾乎人人都在工作。世界上有形形色色的人,人的工作的區(qū)分在什么地方呢,那就是它的職業(yè),不同職業(yè)的人做不同的事。

學(xué)生的工作就是學(xué)習(xí),司機(jī)的工作是開車,小販的工作是賣商品,程序員的工作是編寫代碼。

現(xiàn)在我們分析一下,世界上有很多人,人都要工作

人 { 工作 = 未確定 }

學(xué)生的工作是學(xué)習(xí)

學(xué)生 { 人 , 工作 = 學(xué)習(xí) }

司機(jī)的工作是開車

司機(jī) { 人 , 工作 = 開車 }

小販的工作是販賣

小販 { 人 , 工作 = 販賣 }

程序員的工作是編程

程序員 { 人 , 工作 = 編程 }

#include <iostream>

unsing namespace std;

class Man{

public:

virtual void Work( void ) = 0;//純虛函數(shù),沒有確定的職業(yè)就不知道他的工作。

};

class Student : public Man{

public:

void Work( void ) { cout << "I'm Learning."<< endl; };

};

class Chauffeur : public Man{

public:

void Work( void ) { cout << "I'm Driving."<< endl; };

};

class Vendor : public Man{

public:

void Work( void ) { cout << "I'm Vending."<< endl; };

};

class Programer : public Man{

public:

void Work( void ) { cout << "I'm Coding."<< endl; };

};

void main()

{

Man * which[5];

which[0] = new Student;

which[1] = new Chauffeur;

which[2] = new Vendor;

which[3] = new Programer;

which[4] = NULL;

for( int i = 0 ; which[i] ; i++ )

 {

which[i]->Work();

delete which[i];

 }

}

運(yùn)行結(jié)果

I'm Learning. //虛函數(shù)表指針指向的Student的虛函數(shù)表

I'm Driving.//虛函數(shù)表指針指向的Chauffeur的虛函數(shù)表

I'm Vending.//虛函數(shù)表指針指向的Vendor的虛函數(shù)表

I'm Coding. //虛函數(shù)表指針指向的Programer的虛函數(shù)表

我們看到了由于使用了虛函數(shù),類增加了虛函數(shù)表和虛函數(shù)表指針

which[0] = new Student;

我們分析這個指針,他指向一個Student對象,而這個指針描述的是一個Man對象,在Student對象被創(chuàng)建的時候虛函數(shù)表指針指向了Student的虛函數(shù)表,所以which[0]->Work();調(diào)用的是在Student的虛函數(shù)表里查出來的Student::Work();其它的以此類推,不難得到運(yùn)行的結(jié)果。

不同職業(yè)的類用同一個接口實(shí)現(xiàn)了不同功能,我們的目的達(dá)到了,代碼很簡潔,意圖很明顯,這里C++又一次很好的實(shí)現(xiàn)了面向?qū)ο蟮乃枷搿?br>


主站蜘蛛池模板: 日韩一区二区三区不卡 | 天天狠狠弄夜夜狠狠躁·太爽了 | 伊人网址| 亚洲另类电击调教在线观看 | 四虎国内精品一区二区 | 欧美影院久久 | 天天碰人人 | 欧美专区在线观看 | 亚洲 欧美 日韩中文字幕一区二区 | 色综合天天综一个色天天综合网 | 亚洲人成在线播放网站岛国 | 亚洲大片免费观看 | 欧美亚洲激情视频 | 日韩精品视频免费观看 | 亚洲性欧美 | 四虎永久在线精品视频免费观看 | 日本中文字幕网 | 亚洲综合精品一二三区在线 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 欧美午夜网 | 色欲香天天天综合网站 | 色综合久久88色综合天天提莫 | 亚洲性视频在线 | 亚洲天堂一区二区 | 天堂资源站 | 午夜毛片在线观看 | 日本网站在线看 | 五月激情综合网 | 四虎8848永久在线 | 青青热久免费精品视频网站 | 亚洲国产精品成人午夜在线观看 | 天堂网www天堂在线资源链接 | 青娱乐极品在线 | 日本不卡网 | 速度与激情9完整版免费观看 | 日本免费色 | 青青草视频在线免费观看 | 热99视频| 青青视频网站 | 亚洲专区路线一路线二 | 欧美一区二区三区美人 |