第二講復(fù)雜的對(duì)象_第1頁(yè)
第二講復(fù)雜的對(duì)象_第2頁(yè)
第二講復(fù)雜的對(duì)象_第3頁(yè)
第二講復(fù)雜的對(duì)象_第4頁(yè)
第二講復(fù)雜的對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第二講復(fù)雜的對(duì)象1第一頁(yè),共二十四頁(yè),編輯于2023年,星期四本講主要內(nèi)容類和對(duì)象對(duì)象數(shù)組和對(duì)象指針this指針第二頁(yè),共二十四頁(yè),編輯于2023年,星期四1.類和對(duì)象在面向?qū)ο蟪绦蛟O(shè)計(jì)中,對(duì)象的類型稱為類(class)。類代表了某一批對(duì)象的共性和特征。類是對(duì)象的抽象。而對(duì)象是類的具體實(shí)例(instance)。class<自定義類類型名>

{

[private:]

[<私有成員>]

[protected:]

[<私有成員>]

[public:]

[<公有成員>]

};對(duì)象的定義

類類型對(duì)象1,對(duì)象2,…

第三頁(yè),共二十四頁(yè),編輯于2023年,星期四類設(shè)計(jì)例題1定義一個(gè)類,實(shí)現(xiàn)輸入10個(gè)整數(shù),并能夠反序輸出。classmycla{private: intarr[10];public: voidinput() { for(inti=0;i<10;i++)cin>>arr[i]; } voidpr() { for(inti=9;i>=0;i--)cout<<arr[i]<<""; }};參考答案第四頁(yè),共二十四頁(yè),編輯于2023年,星期四類設(shè)計(jì)例題2定義一個(gè)復(fù)數(shù)類complex,實(shí)現(xiàn)復(fù)數(shù)加、減和乘的功能。classcomplex{private:doubler;doublei;public:voidincom();complexaddcom(complexc2);complexsubcom(complexc2);complexmulcom(complexc2)voidoutcom();};參考答案第五頁(yè),共二十四頁(yè),編輯于2023年,星期四練習(xí)1.在C++語(yǔ)言中,數(shù)據(jù)封裝要解決的問(wèn)題是

A)數(shù)據(jù)的規(guī)范化

B)便于數(shù)據(jù)轉(zhuǎn)換

C)避免數(shù)據(jù)丟失

D)防止不同模塊之間數(shù)據(jù)的非法訪問(wèn)

答案:D2.一個(gè)函數(shù)功能不太復(fù)雜但要求被頻繁調(diào)用,應(yīng)選用

A.內(nèi)聯(lián)函數(shù)

B.重載函數(shù)

C.遞歸函數(shù)

D.嵌套函數(shù)答案:A第六頁(yè),共二十四頁(yè),編輯于2023年,星期四2.對(duì)象數(shù)組和對(duì)象指針數(shù)組不僅可以由簡(jiǎn)單的變量組成,也可以由對(duì)象組成。對(duì)象數(shù)組的使用方法有普通的對(duì)象方法相同。定義一般形式類名對(duì)象名[參數(shù)];第七頁(yè),共二十四頁(yè),編輯于2023年,星期四對(duì)象指針指向?qū)ο蟮闹羔樅?jiǎn)稱對(duì)象指針對(duì)象空間的起始地址就是對(duì)象的指針定義一般形式類名*對(duì)象指針名;對(duì)象動(dòng)態(tài)的建立與釋放對(duì)象動(dòng)態(tài)的建立類*ptpt=new類動(dòng)態(tài)的釋放deletept;第八頁(yè),共二十四頁(yè),編輯于2023年,星期四程序中常常用對(duì)象指針作為函數(shù)的參數(shù)好處:實(shí)現(xiàn)傳地址調(diào)用,可以在被調(diào)用函數(shù)中改變調(diào)用函數(shù)的參數(shù)對(duì)象值,實(shí)現(xiàn)函數(shù)之間的信息傳遞;使用對(duì)象指針作為參數(shù)僅傳遞實(shí)參的地址給形參,而不進(jìn)行副本的拷貝,這樣可以減少開(kāi)銷,提高運(yùn)行效率。第九頁(yè),共二十四頁(yè),編輯于2023年,星期四對(duì)象指針例題3設(shè)計(jì)一個(gè)類,具有x,y私有數(shù)據(jù)成員,設(shè)計(jì)方法實(shí)現(xiàn)對(duì)象之間的拷貝。classcla{private: intx;inty;public:voidincome(){ cin>>x>>y;}voidcopy(cla*p){ x=p->x;y=p->y;}voidpr(){ cout<<x<<""<<y<<endl;}};參考答案第十頁(yè),共二十四頁(yè),編輯于2023年,星期四寫(xiě)出以下程序段的輸出結(jié)果#include<iostream.h>#include<string.h>classperson{ private: intno; charname[20]; public: voidsetvalue(intno,charname[]) { this->no=no; strcpy(this->name,name); } intgetno(){returnno;} char*getname(){returnname;}};voidmain() {person*p; p=newperson; p->setvalue(1,"zhang"); cout<<p->getno()<<":"<<(*p).getname()<<endl; }答案:1:zhang第十一頁(yè),共二十四頁(yè),編輯于2023年,星期四指向?qū)ο髷?shù)組的指針指向?qū)ο髷?shù)組的指針格式類名(*指針名)[(大小)]…如A(*pa)[10];pa是一個(gè)指向?qū)ο髷?shù)組的指針名它指向的對(duì)象數(shù)組是一個(gè)一維數(shù)組每個(gè)元素是類A的一個(gè)對(duì)象第十二頁(yè),共二十四頁(yè),編輯于2023年,星期四對(duì)象指針數(shù)組對(duì)象指針數(shù)組的元素是指向?qū)ο蟮闹羔?,它要求所有的?shù)組元素都是指向相同類的對(duì)象的指針。格式:類名*(數(shù)組名)[大小]…對(duì)象指針數(shù)組與一般數(shù)組相似,只是數(shù)組的元素不同。數(shù)組元素為指向?qū)ο蟮闹羔槙r(shí),該數(shù)組為對(duì)象指針數(shù)組。第十三頁(yè),共二十四頁(yè),編輯于2023年,星期四例題4定義一個(gè)類cla,具有x,y兩個(gè)數(shù)據(jù)成員,有輸入和輸出功能,在主函數(shù)中,定義若干個(gè)對(duì)象,定義一個(gè)對(duì)象指針數(shù)組,指向它們,利用對(duì)象指針數(shù)組來(lái)實(shí)現(xiàn)所有對(duì)象的輸出功能。第十四頁(yè),共二十四頁(yè),編輯于2023年,星期四練習(xí)1.下列關(guān)于對(duì)象數(shù)組的描述中,()是錯(cuò)誤的。(A)對(duì)象數(shù)組的數(shù)組名是一個(gè)常量指針

(B)對(duì)象數(shù)組的下標(biāo)從0開(kāi)始

(C)對(duì)象數(shù)組的每一個(gè)元素都是相同的對(duì)象

(D)對(duì)象數(shù)組只能賦初值,不能再程序中賦值答案:D2.下列關(guān)于指向二維對(duì)象數(shù)組的指針,定義正確的是()。

(A).cla(*pt)[3][4]

(B).cla(*pt)[3](obj)

(C).cla*pt[3][4]

(D).cla(*pt)[3,4]

答案:A第十五頁(yè),共二十四頁(yè),編輯于2023年,星期四3.this指針C++中,同一類的各個(gè)對(duì)象都有自己的數(shù)據(jù)成員的存儲(chǔ)空間,而系統(tǒng)不會(huì)為每個(gè)類的對(duì)象建立成員函數(shù)的副本。類的成員函數(shù)可以被各個(gè)對(duì)象調(diào)用。問(wèn)題:Tclassobject1,objectp;object1.print();objectp->print();成員函數(shù)print()是怎樣分清給哪個(gè)對(duì)象執(zhí)行的呢?第十六頁(yè),共二十四頁(yè),編輯于2023年,星期四thisC++為成員函數(shù)提供一個(gè)稱為this的指針,this在所有成員函數(shù)調(diào)用里作為一個(gè)隱含參數(shù)傳送給成員函數(shù),所以,我們常稱成員函數(shù)擁有this指針。當(dāng)一個(gè)對(duì)象調(diào)用類的成員函數(shù)時(shí),this指針就指向該對(duì)象,this是一個(gè)隱含的指針,它不能被顯式說(shuō)明;this是個(gè)局部變量,局限于某一個(gè)對(duì)象。this指針通常不顯式使用,需要時(shí)可以用(*this)來(lái)表示給成員對(duì)象。this指針主要在運(yùn)算符重載、自引用等場(chǎng)合。當(dāng)一個(gè)對(duì)象調(diào)用類的成員函數(shù)時(shí),系統(tǒng)先將該對(duì)象的地址賦給this指針,然后調(diào)用成員函數(shù)。第十七頁(yè),共二十四頁(yè),編輯于2023年,星期四this指針只能在一個(gè)類的成員函數(shù)中調(diào)用,它表示當(dāng)前對(duì)象的地址。下面是一個(gè)例子:

voidDate::setMonth(intmn)

{

month=mn;//這三句是等價(jià)的

this->month=mn;

(*this).month=mn;

}第十八頁(yè),共二十四頁(yè),編輯于2023年,星期四例如:類cla中有一個(gè)成員函數(shù)intcla::fun(){returnx*y;}C++把它處理為intcla::fun(cla*this){returnthis->x*this->y;}當(dāng)對(duì)象obj調(diào)用該成員函數(shù)時(shí),實(shí)際上是用下面的方式調(diào)用的obj.fun(&obj);將對(duì)象obj的地址傳給形this指針,然后按this的指向去引用成員函數(shù)的。注意:this指針通常不顯式定義!下面的語(yǔ)句不能出現(xiàn)在程序中,這里是為了便于理解。intcla::fun(cla*this)obj.fun(&obj);第十九頁(yè),共二十四頁(yè),編輯于2023年,星期四this指針練習(xí)(j205.cpp)看程序,寫(xiě)結(jié)果。#include<iostream.h>classaa{private:inta,b;public: voidsetaa() {a=0;b=0;}voidsetaa1(intx,inty) {a=x;b=y;} intreturna() {returna;} intreturnb() {returnb;}

voidmain(){aaa1,a2;a1.setaa();a2.setaa1(3,4);a1.copy(a2);cout<<a1.returna()-a2.returna()<<endl;cout<<a1.returnb()+a2.returnb()<<endl;}voidcopy(aa&z);};voidaa::copy(aa&z){ if(this==&z) return; *this=z;}08第二十頁(yè),共二十四頁(yè),編輯于2023年,星期四j206.cpp例題5利用this指針,判斷兩個(gè)對(duì)象是否指針同一內(nèi)存空間。classcla{public: intfun1(cla&obj) { if(this==&obj) return1; else return0; } };第二十一頁(yè),共二十四頁(yè),編輯于2023年,星期四練習(xí)1.關(guān)于this指針的說(shuō)法正確的是()。

(A)

this指針必須顯示的說(shuō)明(B)定義一個(gè)類后,this指針就指向該類

(C)成員函數(shù)擁有this指針

(D)this指針屬于對(duì)象的答案:C2.this指針能出現(xiàn)在()地方。

(A)成員函數(shù)內(nèi)部(B)成員函數(shù)形式參數(shù)(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論