1.抽象類
抽象類的一般形式
帶有純虛函數(shù)的類稱為抽象類:
class? 類名
?{
???? virtual 類型 函數(shù)名(參數(shù)表)=0;
????????????????????????????????????????? //純虛函數(shù)
???? ...
}
?
2. 抽象類
抽象類只能作為基類來使用霍狰。
不能聲明抽象類的對(duì)象抡草,只能聲明抽象類的指針。
純虛函數(shù)直到被覆蓋前所派生的類均為抽象類
?
3.抽象類的作用
抽象類為抽象和設(shè)計(jì)的目的而建立蔗坯,將有關(guān)的數(shù)據(jù)和行為組織在一個(gè)繼承層次結(jié)構(gòu)中康震,保證派生類具有要求的行為。
對(duì)于暫時(shí)無法實(shí)現(xiàn)的函數(shù)宾濒,可以聲明為純虛函數(shù)腿短,留給派生類去實(shí)現(xiàn)。
?
4. 使用純虛函數(shù)時(shí)應(yīng)注意:
(1)抽象類中可以有多個(gè)純虛函數(shù)绘梦。
(2)抽象類也可以定義其他非純虛函數(shù)背零。
(3)從抽象類可以派生出具體或抽象類沉噩,但不能從具體類派生出抽象類阱高。
?
?5.抽象類需要有構(gòu)造函數(shù)和析構(gòu)函數(shù)嗎
?????? 抽象類通常代表一個(gè)抽象的概念昆禽,它提供一個(gè)繼承的出發(fā)點(diǎn)。??
???? 在一個(gè)復(fù)雜的類繼承結(jié)構(gòu)中择卦,越上層的類抽象程度越高敲长,有時(shí)甚至無法給出某些成員函數(shù)的實(shí)現(xiàn),顯然秉继,抽象類是一種特殊的類祈噪,它一般處于類繼承結(jié)構(gòu)的較外層。???
??? 引入抽象類的目的尚辑,主要是為了能將相關(guān)類組織在一個(gè)類繼承結(jié)構(gòu)中辑鲤,并通過抽象類來為這些相關(guān)類提供統(tǒng)一的操作接口,更好的發(fā)揮多態(tài)性杠茬。
抽象類使得數(shù)據(jù)結(jié)構(gòu)更加清晰月褥,更加貼近自然
?
6. 對(duì)象的復(fù)制(拷貝)
用一個(gè)已知對(duì)象構(gòu)造(初始化)一個(gè)新對(duì)象弛随。
?例:一個(gè)已知對(duì)象構(gòu)造(初始化)另一對(duì)象
????? Student s1(“Jenny”);?
????????????? Student s2=s1;即Student s2(s1);
?????? Student fn(Student s){Student k;//.......? ;return k}
?????? void main()
?????? {Student m,n;n=fn(m);}
使用Student (char*? )不再合適,引入新的構(gòu)造函數(shù)——拷貝構(gòu)造函數(shù):
Student (Student& s);或者是Student ( const Student& s);
?
?