多態(tài)
多態(tài)性的概念
多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的第三個(gè)重要特征。
多態(tài)性是指發(fā)出同樣的消息被不同類型的對(duì)象接收時(shí)導(dǎo)致完全不同的行為。
消息——主要指對(duì)類的成員函數(shù)的調(diào)用蹄殃。
虛函數(shù)的使用方法:
(1)在基類用virtual聲明成員函數(shù)為虛函數(shù)
(2)在派生類中重新定義此函數(shù)卸耘,要求函數(shù)名祠饺、函數(shù)的參數(shù)個(gè)數(shù)和類型全部與基類的虛函數(shù)相同,并根據(jù)派生類的需要重新定義函數(shù)體叽掘。
(3)定義一個(gè)指向基類對(duì)象的指針變量楣铁,并使它指向同一類族中的某一對(duì)象。
(4)通過該指針變量調(diào)用此虛函數(shù)更扁,此時(shí)調(diào)用的就是指針變量指向的對(duì)象的同名函數(shù)盖腕。
c++規(guī)定,當(dāng)一個(gè)成員函數(shù)被聲明為虛函數(shù)后浓镜,其派生類中原型相同的函數(shù)都自動(dòng)成為虛函數(shù)
派生類沒有對(duì)基類的虛函數(shù)重新定義溃列,則派生類繼承其直接基類的虛函數(shù)
#includeusing namespace std;class B0//基類B0聲明{public://虛成員函數(shù)virtual void display(){cout<<"B0::display( )"
void main() //主函數(shù)
{ B0 b0,? *p; //聲明基類對(duì)象和指針
B1 b1; //聲明派生類對(duì)象
D1 d1; //聲明派生類對(duì)象
p=&b0;
fun(p); //調(diào)用基類B0函數(shù)成員
p=&b1;
fun(p); //調(diào)用派生類B1函數(shù)成員
p=&d1;
fun(p); //調(diào)用派生類D1函數(shù)成員
}
vector是c++STL(標(biāo)準(zhǔn)模板類庫)的重要一員∈ǎ可以容納許多其它類型的相同實(shí)體哭廉,稱為容器。使用時(shí):#include四種定義方式:(1)vectora(10);(2)vectorb(10,1);(3)vectorc(b);(4)vectord(b.begin(),b.begin()+3);輸出向量中的所有元素:(1)for(int i=0; i::iterator it=a.begin();it!=a.end();++it)cout<<*it;vector::iterator //遍歷器相叁,迭代器(指向容器元素的指針)
向量中的操作都是通過使用成員函數(shù)來完成的:
a.clear(); //清空a
a.push_back(5)遵绰;//向最后插入一個(gè)元素
a.pop_back();//刪除最后一個(gè)元素
a.resize(10,2)//元素的個(gè)數(shù)調(diào)整至10個(gè),值為2
C++標(biāo)準(zhǔn)程序庫中的string類string name;? 自動(dòng)處理空間的占用問題增淹。C++字符串并不以’\0’結(jié)尾 .可以用 = 進(jìn)行賦值操作椿访,== 進(jìn)行比較,+ 做串聯(lián).使用時(shí)#include//注意這里不是string.h
string str1,str2=“abcd”;
str1=str2;
str2=str1+”123”;
cout<<str2<<" ?"<<str2.length()<<" ?"<<str2.insert(0,"8");
由C++字符串得到對(duì)應(yīng)的C_string的方法是使用data()虑润、c_str()
data()以字符數(shù)組的形式返回字符串內(nèi)容成玫,但并不添加’\0’。
char s[20];strcpy(s,str1.data());
c_str()返回一個(gè)以‘\0’結(jié)尾的字符數(shù)組拳喻,strcpy(s,str2.c_str());
.虛函數(shù)的實(shí)用意義:?從基類繼承來的某些成員函數(shù)不完全適應(yīng)派生類的需要哭当,允許其派生類中對(duì)該函數(shù)重新定義,賦予它新的功能冗澈,當(dāng)基類的這些成員函數(shù)聲明為虛函數(shù)后钦勘,可以通過指向其基類的指針指向同一類族中不同類的對(duì)象,從而調(diào)用其同名的函數(shù)亚亲。?由虛函數(shù)實(shí)現(xiàn)的多態(tài)性是:同一類族中不同類的對(duì)象彻采,對(duì)同一函數(shù)調(diào)用作出不同的響應(yīng)腐缤。??是追求用指針管理繼承體系對(duì)象的結(jié)果。 ?多態(tài)性使得應(yīng)用程序使用類體系中的不同層次對(duì)象,并使這些對(duì)象共存的復(fù)雜局面達(dá)到了一種可管理的境界.?程序員從使用孤立的類肛响,到使用分層的類岭粤,并且讓各種對(duì)象“同場(chǎng)競(jìng)技”,充分展現(xiàn)其個(gè)性. ?不支持多態(tài)的語言不能稱為面向?qū)ο蟮恼Z言。