freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c程序設(shè)計(jì)實(shí)踐教程(下)ppt-在線瀏覽

2024-12-04 00:26本頁(yè)面
  

【正文】 ?? }。 例 : class Name{ char* name。 n) { if(this==amp。//避免對(duì)象自我復(fù)制 delete name。 strcpy(name,)。 } …… }。 ? 構(gòu)造函數(shù): – 創(chuàng)建對(duì)象,并初始化對(duì)象的數(shù)據(jù)成員。 構(gòu)造函數(shù) ? 構(gòu)造函數(shù)的定義格式 ClassName(形參表 ) { … } //函數(shù)體 ① 它與所在類同名 。 例: class Person{ char name[12]。 char sex[4]。 age=a。 } …… //省略其它成員函數(shù) }。 int age。 public: Person(const char* n,int a,const char* s); … //其它成員函數(shù)說(shuō)明 }。 age=a。 } 也可在類中聲明原型,在類外定義。 例: void main( ){ Person p(“張三 ” ,20, “男 ” )。 ② 構(gòu)造函數(shù)可以重載。 public: Point( ){x=0。 //(1) Point(float a,float b){x=a。} //(2) //… }。 //匹配 (1) Point p2(,)。即 :數(shù)據(jù)成員名 1(初值 1),?, 數(shù)據(jù)成員名 n(初值 n) ② 舉例: Person::Person( ):name(zhang),age(22) { strcpy(sex,男 )。 數(shù)據(jù)成員的初始化 ? 普通數(shù)據(jù)成員的初始化既可在函數(shù)體進(jìn)行,也可在初始化表進(jìn)行。 y=y1。 缺省的 構(gòu)造函數(shù) ① C++規(guī)定,每個(gè)類至少有一個(gè)構(gòu)造函數(shù),否則就不能創(chuàng)建該類的對(duì)象。 public: float Area( )。 }。 …… } 能否創(chuàng)建 Rectangle類的對(duì)象? ② 類中若未定義構(gòu)造函數(shù),則 C++編譯系統(tǒng)自動(dòng)提供一個(gè)缺省的構(gòu)造函數(shù)。 class Rectangle{ float length,width。 float Perimeter( )。 …… //類的實(shí)現(xiàn) void main( ) { Rectangle rect。 例: class Circle{ int radius。 } //(1) }。 Circle c2(5)。 public: Circle(int r){ radius=r。 Circle c1(3)。 匹配 (1) 匹配 (2) 添加無(wú)參構(gòu)造函數(shù)! 對(duì)上例的修改方法 2 : class Circle{ int radius。 } //(1) }。 Circle c2。 使用參數(shù)帶缺省值的構(gòu)造函數(shù)時(shí),應(yīng)防二義性。 public: Circle(){ } //L1 Circle(int r=0){ radius=r。 Circle c1。 //匹配 L2行的構(gòu)造函數(shù) 當(dāng)編譯 L3行的語(yǔ)句時(shí),出錯(cuò)。 析構(gòu)函數(shù) ? 作用: – 與構(gòu)造函數(shù)相反,在對(duì)象被撤消時(shí)由系統(tǒng)自動(dòng)調(diào)用,做清理工作。 – 析構(gòu)函數(shù)沒(méi)有返回值,函數(shù)名前也不能用關(guān)鍵字 void。 ? 例 調(diào)用析構(gòu)函數(shù)。 public: Point(){ x=y=0。 } Point(int a,int b){ x=a。 coutConstructor with parameters called.\n。,39。\n39。,39。\n39。 為了觀察調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的過(guò)程,分別在構(gòu)造函數(shù)和析構(gòu)函數(shù)內(nèi)添加了輸出調(diào)用信息的語(yǔ)句。 ( )。 { Point p2(3,2)。 } coutExit main!\n。 – 對(duì)象撤銷的順序與創(chuàng)建的順序正好相反。 ? 若類的定義中沒(méi)有顯式定義析構(gòu)函數(shù),則編譯器自動(dòng)為該類產(chǎn)生一個(gè)缺省的析構(gòu)函數(shù)。 ? 無(wú)需顯式定義析構(gòu)函數(shù)的典型情況: – 撤消對(duì)象時(shí)不做任何清理工作。由于它們所指向的動(dòng)態(tài)內(nèi)存空間是對(duì)象自己管理的,因此在對(duì)象即將撤消時(shí),需通過(guò)析構(gòu)函數(shù)將所管理的動(dòng)態(tài)內(nèi)存空間及時(shí)釋放。 include include class Person{ char* name。 public: Person(char* n,int a) { if(n) { name=new char[strlen(n)+1]。 } else name=0。 } ~Person( ){ delete []name。,39。 } }。 ( )。在相同的生存期的情況下,先創(chuàng)建的對(duì)象后釋放,后創(chuàng)建的對(duì)象先釋放。 ? 例 構(gòu)造函數(shù)完成類型轉(zhuǎn)換功能的例子。 public: Money (double d) { int t=d*100。jiao=(tyuan*100)/10。 } Money (int y=0,int j=0,int f=0) { yuan=y。fen=f。 } }。 ( )。 Money m3=。 m3= 。 } 隱式類型轉(zhuǎn)換:調(diào)用單參數(shù)構(gòu)造函數(shù),創(chuàng)建 Money類型的臨時(shí)對(duì)象。 拷貝構(gòu)造函數(shù) ? 拷貝構(gòu)造函數(shù):特殊的構(gòu)造函數(shù),其形參是本類的對(duì)象的引用,其作用是使用一個(gè)已經(jīng)存在的對(duì)象 (由拷貝構(gòu)造函數(shù)的參數(shù)指定的對(duì)象 )去初始化一個(gè)新的同類的對(duì)象。c) { ... } //函數(shù)體完成對(duì)應(yīng)數(shù)據(jù)成員的賦值 ? 例 使用完成拷貝功能的構(gòu)造函數(shù)。 public: Point(int a=0,int b=0){ x=a。 } Point(Pointamp。 y=。 } int GetX( ){ return x。 } void Show( ){ coutx=x,y=y39。 } }。 int dy=()()。 } Point Mid(Pointamp。 p2) { int x=(()+())/2。 return Point(x,y)。 Point p2(p1)。 //等價(jià): Point p3(p1)。 ()。 p3=Mid(p0,p3)。 } ? 函數(shù)Distance(Point,Point)的形參為類的對(duì)象,當(dāng)執(zhí)行函數(shù)調(diào)用 distance(p0,p3)時(shí),實(shí)參初始化形參,兩次調(diào)用拷貝構(gòu)造函數(shù),分別用實(shí)參對(duì)象 p0和 p3初始化形參對(duì)象 p1和 p2。 ?結(jié)果 (VC6 with sp6): 調(diào)用了拷貝構(gòu)造函數(shù) ! 調(diào)用了拷貝構(gòu)造函數(shù) ! x=8,y=15 x=8,y=15 x=8,y=15 調(diào)用了拷貝構(gòu)造函數(shù) ! 調(diào)用了拷貝構(gòu)造函數(shù) ! ? 默認(rèn)拷貝構(gòu)造函數(shù): – 若定義類時(shí)未顯式定義該類的拷貝構(gòu)造函數(shù),則編譯系統(tǒng)會(huì)在編譯該類時(shí)自動(dòng)生成一個(gè)默認(rèn)拷貝構(gòu)造函數(shù)。 – 例 Point的拷貝構(gòu)造函數(shù)與默認(rèn)的拷貝構(gòu)造函數(shù)功能一樣,不必顯式定義。 ? 例 默認(rèn)拷貝的構(gòu)造函數(shù)。 public: String(char*c=0) { if(c) { p=new char[strlen(c)+1]。} else p=NULL。 } void Show( ){ coutstring=p39。 } }。 String s2(s1)。 ( )。 – 主函數(shù)結(jié)束:先撤消 s2, s2對(duì)象釋放其所指動(dòng)態(tài)內(nèi)存;其后撤銷 s1對(duì)象,但因s1對(duì)象所指動(dòng)態(tài)內(nèi)存已被 s2對(duì)象釋放,造成重復(fù)釋放同一塊動(dòng)態(tài)內(nèi)存,出現(xiàn)運(yùn)行錯(cuò)誤。s) { if(){ p=new char[strlen()+1]。 }else p=0。 ? 例如: class Date{ int year,month,day。month=m。 } }。 char sex[4]。 //對(duì)象成員 public: Person(char*, char*,int,int,int)。 ? 對(duì)象成員的初始化 –通過(guò)初始化表進(jìn)行,如: Person::Person(char*n,char*s,int y,int m,int d) :birthday(y,m,d) { strcpy(name,n)。 } –若未在初始化表中初始化對(duì)象成員,則系統(tǒng)自動(dòng)調(diào)用該對(duì)象成員的缺省的構(gòu)造函數(shù)來(lái)初始化。 – 如果一個(gè)類包含多個(gè)對(duì)象成員,對(duì)象成員的構(gòu)造函數(shù)的調(diào)用順序由它們?cè)谠擃愔械恼f(shuō)明順序決定,而與它們?cè)诔跏蓟碇械捻樞驘o(wú)關(guān)。 include class Point{ int x,y。 y=b。 } void Show( ) { coutx=x,y=yendl。 class Rectangle{ Point p。 public: Rectangle(int l,int w,int a,int b):p(a,b) { length=l。 coutConstructor of class Rectangle is called.\n。 coutlength=length,width=widthendl。 void main( ){ Rectangle r(5,4,45,55)。 } 程序運(yùn)行結(jié)果: Constructor of class Point is called. Constructor of class Rectangle is called. x=45,y=55 length=5,width=4 友元 ? 有時(shí)需要在對(duì)象外部頻繁訪問(wèn)對(duì)象私有的或保護(hù)的數(shù)據(jù)成員,若通過(guò)調(diào)用公有成員函數(shù)間接訪問(wèn),由于參數(shù)傳遞、類型檢查等都需占用時(shí)間,必然降低程序的運(yùn)行效率。 ? 友元以類的封裝性的有限破壞為代價(jià)來(lái)提高程序的運(yùn)行效率,應(yīng)謹(jǐn)慎使用。 友元函數(shù) ? 友元函數(shù)的說(shuō)明格式: friend type FuncName(args)。 include include class Point{ int x,y。y=j。 } int GetY( ){ return y。,Pointamp。 }。 double distance(Pointamp。 p2) { int dx=,dy=。 } void main( ) { Point a(8,15),b(3,7)。 } 程序運(yùn)行結(jié)果: The distance is: 友元函數(shù) distance( )可通過(guò)對(duì)象名直接訪問(wèn) Point類的對(duì)象 p1和 p2的私有數(shù)據(jù)成員 x和 y,提高了程序的效率。友元函數(shù)體可在類內(nèi)或類外定義。如上例中的 。 – 一個(gè)類的成員函數(shù)也可作為另一個(gè)類的友元函數(shù),例如: class A{ … int f(… )。 class B{ … //成員定義 friend int A::f(… )。 // 是類 B的友元 在聲明這個(gè)友元函數(shù)時(shí)需要在函數(shù)名前面加上它的類名和作用域運(yùn)算符 “ ::”。有時(shí)友元類的使用也是必要的選擇。 include include class Date{ int year,month,day。month=m。} void display(){ coutyearmonthday。 }。 char sex[4]。 public: Person(char*n,int y,int m,int d,char*s) { strcpy(name,n)。 =y。 =d。 cout,birthday:39。.39。 } }。 ( )。 ? 友元的其它注意事項(xiàng)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1