1楣铁、C++指針和引用的區(qū)別
指針p:可以看做是一個(gè)對(duì)象侈百,它有自己的地址(指針有自己在內(nèi)存中的地址,所以有指向指針的指針)觅丰,它內(nèi)部可以存值(存的是指向的數(shù)據(jù)類型的值)赂蕴。由于對(duì)象有常量和變量之分,所以指針也有常量和變量之分舶胀。常指針:所指向的變量地址是不可變的概说;指向常量的指針:指針?biāo)赶虻臄?shù)據(jù)類型是個(gè)常量,但是指針的指向是可以改變的嚣伐。聲明一個(gè)指針之后不用立即初始化糖赔,指針可以指向NULL。
引用:引用不是一個(gè)對(duì)象轩端,它沒(méi)有自己的地址放典,可以把引用看作是一個(gè)對(duì)象的別名。定義了一個(gè)對(duì)象之后,就必須初始化奋构,不能指向NULL壳影;并且一旦與一個(gè)值綁定之后,就不能再和其它值綁定在一起弥臼。
2宴咧、函數(shù)重載和函數(shù)重寫(xiě)的區(qū)別
函數(shù)重載:當(dāng)函數(shù)就有相同的函數(shù)名,但參數(shù)列表的情形不相同時(shí)(參數(shù)的個(gè)數(shù)不同或者參數(shù)的類型不同)径缅,這樣的同名不同參數(shù)的函數(shù)叫做函數(shù)重載掺栅。要注意的是:僅僅是返回值類型的不同,無(wú)法構(gòu)成重載纳猪。它是C++多態(tài)性的一種體現(xiàn)氧卧。
函數(shù)重寫(xiě):也被成為函數(shù)覆蓋;是指子類重新定義虛基類(抽象類)中具有相同名稱和參數(shù)類型的虛函數(shù)或者成員函數(shù)氏堤,主要是在繼承關(guān)系中出現(xiàn)沙绝。(1)重寫(xiě)的函數(shù)和被重寫(xiě)的函數(shù)必須都為virtual函數(shù),并分別位于基類和派生類中鼠锈;(2)重寫(xiě)的函數(shù)和被重寫(xiě)的函數(shù)宿饱,函數(shù)名和函數(shù)參數(shù)必須完全一致;(3)重寫(xiě)的函數(shù)和被重寫(xiě)的函數(shù)脚祟,返回值相同,或者返回指針或引用强饮,并且派生類虛函數(shù)返回的指針或引用的類型是基類中被替換的虛函數(shù)返回的指針或引用的類型的字類型由桌。它也是C++多態(tài)性的一種體現(xiàn)。
3邮丰、對(duì)抽象類行您、virtual的使用和理解
抽象類,是指包含虛函數(shù)的類剪廉,它不能實(shí)例化對(duì)象娃循,只能定義類的指針和引用,只能作為上層基類存在斗蒋。用virtual聲明的虛函數(shù)有兩種:(1)普通虛函數(shù)(簡(jiǎn)稱虛函數(shù)):有一個(gè)缺省實(shí)現(xiàn)捌斧;(2)純虛函數(shù):只有一個(gè)定義,沒(méi)有具體實(shí)現(xiàn)泉沾。我對(duì)virtual的理解是:它是一種C++接口繼承的方式捞蚂。C++的繼承方式有實(shí)現(xiàn)繼承和接口繼承;實(shí)現(xiàn)繼承就是跷究,繼承父類中已經(jīng)定義好的成員函數(shù)姓迅,通過(guò)創(chuàng)建子類的對(duì)象,傳入不同的值去調(diào)用,無(wú)需額外的編碼丁存;另外一種是接口繼承:是指只繼承聲明肩杈,具體的實(shí)現(xiàn)要子類自己去完成;通過(guò)抽象類中的virtual可以達(dá)到接口繼承的效果解寝。
4扩然、說(shuō)說(shuō)面向?qū)ο蟮娜齻€(gè)特征、以及你對(duì)它們的理解
(1)繼承:讓某個(gè)類型的對(duì)象獲得另一個(gè)類型的對(duì)象的屬性的方法编丘;包括實(shí)現(xiàn)繼承和接口繼承与学;繼承的過(guò)程是從一般到特殊的過(guò)程。
(2)封裝:把客觀事物封裝成抽象的類嘉抓,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對(duì)象操作索守,對(duì)不可信的進(jìn)行信息隱藏。一個(gè)類就是一個(gè)封裝了數(shù)據(jù)以及操作這些數(shù)據(jù)的代碼的邏輯實(shí)體抑片。通過(guò)封裝卵佛,可以對(duì)對(duì)象內(nèi)部的數(shù)據(jù)設(shè)置不同級(jí)別的保護(hù)。
(3)多態(tài):一個(gè)類的實(shí)例的方法在不同情形的使用下有不同的表現(xiàn)敞斋。多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對(duì)象可以共享相同的外部接口截汪。這意味著,雖然針對(duì)不同對(duì)象的具體操作不同植捎,但通過(guò)一個(gè)公共的類衙解,它們(那些操作)可以通過(guò)相同的方式予以調(diào)用⊙媸啵’
5蚓峦、抽象類與虛基類的區(qū)別
抽象類:包含有virtual虛函數(shù)的類
虛基類:虛繼承主要用于一個(gè)類繼承多個(gè)類的情況,避免重復(fù)繼承同一個(gè)類兩次或多次所產(chǎn)生的二義性問(wèn)題济锄。虛基類是相對(duì)于它的派生類而言的暑椰,它本身可以是一個(gè)普通的類。在直接派生類的繼承語(yǔ)句中用virtual關(guān)鍵字荐绝。例如 由類A派生類B和類C一汽,類D又同時(shí)繼承類B和類C,這時(shí)候類D就要用虛繼承的方式避免重復(fù)繼承類A兩次低滩。
6召夹、對(duì)靜態(tài)數(shù)據(jù)和靜態(tài)方法的理解
靜態(tài)數(shù)據(jù)和靜態(tài)方法是對(duì)于類而言的,是類的所有實(shí)例對(duì)象所共享的數(shù)據(jù)和方法恕沫,直接通過(guò)類來(lái)進(jìn)行調(diào)用戳鹅。在內(nèi)存中,靜態(tài)數(shù)據(jù)是不存在于類的實(shí)例對(duì)象中的昏兆,它不會(huì)重復(fù)產(chǎn)生枫虏,只在內(nèi)存中保佑一塊一直存儲(chǔ)靜態(tài)值妇穴,可以將它看成是相對(duì)于這個(gè)類而言的全局方法或者全局變量。