ch2-1-函數(shù) 類和對(duì)象_第1頁
ch2-1-函數(shù) 類和對(duì)象_第2頁
ch2-1-函數(shù) 類和對(duì)象_第3頁
ch2-1-函數(shù) 類和對(duì)象_第4頁
ch2-1-函數(shù) 類和對(duì)象_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、李晉李晉第第2 2章章 類和方法類和方法(1)(1)函數(shù)、類和對(duì)象函數(shù)、類和對(duì)象2主要內(nèi)容主要內(nèi)容 2.1 2.1 函數(shù)函數(shù) 2.2 2.2 類類 2.3 2.3 對(duì)象對(duì)象32.1 2.1 函數(shù)函數(shù) 函數(shù)定義函數(shù)定義 函數(shù)調(diào)用函數(shù)調(diào)用 函數(shù)原型函數(shù)原型 函數(shù)調(diào)用中的參數(shù)傳遞函數(shù)調(diào)用中的參數(shù)傳遞 函數(shù)和變量的作用域函數(shù)和變量的作用域 內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù) 函數(shù)重載函數(shù)重載42.1 2.1 函數(shù)函數(shù)一、函數(shù)的定義一、函數(shù)的定義 類型修飾符類型修飾符 函數(shù)名(形式參數(shù)表)函數(shù)名(形式參數(shù)表) 函數(shù)體函數(shù)體 函數(shù)體:用函數(shù)體:用 括起來的語句序列。括起來的語句序列。 形式參數(shù)表形式參數(shù)表 形式參數(shù)表為空:

2、(形式參數(shù)表為空:( )或()或( voidvoid) 形式參數(shù)表非空:一系列用,隔開的形式參數(shù)說明。形式參數(shù)表非空:一系列用,隔開的形式參數(shù)說明。(每個(gè)形式參數(shù)就是一個(gè)變量)(每個(gè)形式參數(shù)就是一個(gè)變量)52.1 2.1 函數(shù)函數(shù) 函數(shù)返回值函數(shù)返回值有返回值:返回值類型由有返回值:返回值類型由類型修飾符類型修飾符決定。函數(shù)體中必須決定。函數(shù)體中必須有非空有非空return語句語句(return 表達(dá)式表達(dá)式;)無返回值:類型修飾符用無返回值:類型修飾符用void表示。函數(shù)體中無表示。函數(shù)體中無return語語句或有空句或有空return語句語句(return ;)說明:說明:1、 retur

3、n 表達(dá)式表達(dá)式;中表達(dá)式的類型應(yīng)與類型修飾符一致,若中表達(dá)式的類型應(yīng)與類型修飾符一致,若不同,則自動(dòng)進(jìn)行轉(zhuǎn)換。不同,則自動(dòng)進(jìn)行轉(zhuǎn)換。2、若函數(shù)定義中的類型修飾符為空,則默認(rèn)的返回值類型、若函數(shù)定義中的類型修飾符為空,則默認(rèn)的返回值類型為為int。62.1 2.1 函數(shù)函數(shù)二、函數(shù)的調(diào)用二、函數(shù)的調(diào)用1 1、調(diào)用格式:、調(diào)用格式:函數(shù)名(實(shí)在參數(shù)表)函數(shù)名(實(shí)在參數(shù)表) 實(shí)在參數(shù)表:一系列用,隔開的實(shí)在參數(shù)說明。(每個(gè)實(shí)實(shí)在參數(shù)表:一系列用,隔開的實(shí)在參數(shù)說明。(每個(gè)實(shí)在參數(shù)就是一個(gè)表達(dá)式)在參數(shù)就是一個(gè)表達(dá)式) 實(shí)在參數(shù)與形式參數(shù)在類型和數(shù)量上應(yīng)保持一致。實(shí)在參數(shù)與形式參數(shù)在類型和數(shù)量上應(yīng)保

4、持一致。如:如:double sqare(double n) return nn; sqare(5.0)72.1 2.1 函數(shù)函數(shù)2、調(diào)用方式、調(diào)用方式 作為作為表達(dá)式表達(dá)式的函數(shù)調(diào)用的函數(shù)調(diào)用(被調(diào)用的函數(shù)必須有返回值)(被調(diào)用的函數(shù)必須有返回值)如:如:double result; result=sqare(5.0); 作為作為語句語句的函數(shù)調(diào)用。的函數(shù)調(diào)用。如:如:sqare(5.0);82.1 2.1 函數(shù)函數(shù)三、函數(shù)原形三、函數(shù)原形 格式:格式:類型修飾符類型修飾符 函數(shù)名(形式參數(shù)表)函數(shù)名(形式參數(shù)表); ; 作用:函數(shù)原形為函數(shù)調(diào)用提供所需的接口信息。作用:函數(shù)原形為函數(shù)調(diào)用提

5、供所需的接口信息。 若函數(shù)定義在函數(shù)調(diào)用之前,則函數(shù)原形可有可無。若函數(shù)定義在函數(shù)調(diào)用之前,則函數(shù)原形可有可無。 若函數(shù)定義在函數(shù)調(diào)用之后,則必須在函數(shù)調(diào)用之前使若函數(shù)定義在函數(shù)調(diào)用之后,則必須在函數(shù)調(diào)用之前使用函數(shù)原形。用函數(shù)原形。92.1 2.1 函數(shù)函數(shù)四、函數(shù)調(diào)用中的參數(shù)傳遞四、函數(shù)調(diào)用中的參數(shù)傳遞1 1、傳值方式、傳值方式 把實(shí)在參數(shù)的值傳遞給形式參數(shù)。把實(shí)在參數(shù)的值傳遞給形式參數(shù)。 在傳值方式下,對(duì)形式參數(shù)的改變不會(huì)影響到對(duì)應(yīng)的實(shí)在在傳值方式下,對(duì)形式參數(shù)的改變不會(huì)影響到對(duì)應(yīng)的實(shí)在參數(shù)參數(shù)。例:例:double DOUBLE(double n) n=2; return n; voi

6、d main( ) double m=7.0; coutendlm; coutendlDOUBLE(m); coutendlm; 輸出結(jié)果為:輸出結(jié)果為:7.014.07.0102.1 2.1 函數(shù)函數(shù)2 2、數(shù)組參數(shù)、數(shù)組參數(shù) 將整個(gè)數(shù)組作為形式參數(shù),以數(shù)組名作為實(shí)在參數(shù)將整個(gè)數(shù)組作為形式參數(shù),以數(shù)組名作為實(shí)在參數(shù)一維數(shù)組作為參數(shù),可以不限定元素個(gè)數(shù)。一維數(shù)組作為參數(shù),可以不限定元素個(gè)數(shù)。多維數(shù)組作為參數(shù),第一維可以不限定,多維數(shù)組作為參數(shù),第一維可以不限定,其余各維必須限其余各維必須限定定。11#includeint sum(int array ,int size) int s=0; fo

7、r(int i=0;isize;i+) s+=arrayi; return s; void main( ) int v1 =1,2,3,4,5; coutsum(v1,5)endl; int v2 =1,2,3,4,5,6,7,8; coutsum(v2,8)endl;輸出結(jié)果為:輸出結(jié)果為:1536122 2、若以、若以數(shù)組數(shù)組作為參數(shù),則對(duì)形參數(shù)組的改變就是對(duì)實(shí)參數(shù)作為參數(shù),則對(duì)形參數(shù)組的改變就是對(duì)實(shí)參數(shù)組的改變。組的改變。#includeusing namespace std;void sumAll(int data 5,int result ,int rows) for(int i=0

8、;irows;i+) resulti=0; for(int j=0;j5;j+) resulti+=dataij; void main( ) int v 5=1,2,3,4,5,2,3,4,5,6,3,4,5,6,7; int s3; sumAll(v,s,3); for(int i=0;i3;i+) coutsi ;132.1 2.1 函數(shù)函數(shù)3 3、默認(rèn)參數(shù)、默認(rèn)參數(shù) 為形式參數(shù)表中的最后的若干個(gè)參數(shù)設(shè)定默認(rèn)值,則這些為形式參數(shù)表中的最后的若干個(gè)參數(shù)設(shè)定默認(rèn)值,則這些參數(shù)就稱為默認(rèn)參數(shù)就稱為默認(rèn)(/(/可選可選) )參數(shù)。參數(shù)。 默認(rèn)參數(shù)的說明格式:默認(rèn)參數(shù)的說明格式: 類型修飾符類型修飾

9、符 參數(shù)名參數(shù)名= =默認(rèn)值默認(rèn)值如:如:int f(int a, char b, char c=Z , char s =”READY ”);其中為其中為c,sc,s默認(rèn)參數(shù)。默認(rèn)參數(shù)。注:可選參數(shù)應(yīng)在函數(shù)原形中說明,只有當(dāng)函數(shù)定義在函數(shù)調(diào)用之前時(shí)注:可選參數(shù)應(yīng)在函數(shù)原形中說明,只有當(dāng)函數(shù)定義在函數(shù)調(diào)用之前時(shí)才可在函數(shù)定義中說明才可在函數(shù)定義中說明142.1 2.1 函數(shù)函數(shù)五、函數(shù)和變量的作用域五、函數(shù)和變量的作用域1 1、函數(shù)的作用域、函數(shù)的作用域 函數(shù)的作用域是函數(shù)的作用域是全局全局的。(不但在定義它的文件中可以調(diào)的。(不但在定義它的文件中可以調(diào)用,而且在同一系統(tǒng)的其他程序文件中也可以調(diào)

10、用)用,而且在同一系統(tǒng)的其他程序文件中也可以調(diào)用) 若在函數(shù)定義前加若在函數(shù)定義前加static,則此函數(shù)具有文件作用域。(,則此函數(shù)具有文件作用域。(只能在定義它的文件中可以調(diào)用該函數(shù))只能在定義它的文件中可以調(diào)用該函數(shù))如:如: static long add(long a,long b) return a+b;152.1 2.1 函數(shù)函數(shù)2 2、變量的作用域和生存期、變量的作用域和生存期 全局變量全局變量 定義于函數(shù)外部的變量。定義于函數(shù)外部的變量。 全局變量具有靜態(tài)生存期。全局變量具有靜態(tài)生存期。靜態(tài)生存期:存在于應(yīng)用程序的整個(gè)運(yùn)行期間。靜態(tài)生存期:存在于應(yīng)用程序的整個(gè)運(yùn)行期間。全局變

11、量又稱靜態(tài)變量。全局變量又稱靜態(tài)變量。一切靜態(tài)變量,若定義時(shí)未初始化,則自動(dòng)被初始化為一切靜態(tài)變量,若定義時(shí)未初始化,則自動(dòng)被初始化為0 0。162.1 2.1 函數(shù)函數(shù) 全局變量具有跨文件作用域。全局變量具有跨文件作用域。不但同一文件中的函數(shù)可以訪問,而且同一系統(tǒng)的其他程不但同一文件中的函數(shù)可以訪問,而且同一系統(tǒng)的其他程序文件中的函數(shù)也可以訪問。序文件中的函數(shù)也可以訪問。若在同一系統(tǒng)的其他程序文件中的函數(shù)要訪問全局變量,若在同一系統(tǒng)的其他程序文件中的函數(shù)要訪問全局變量,則必須進(jìn)行外部說明。則必須進(jìn)行外部說明。例:例:/f1.cpp double var; ./f2.cpp#includevo

12、id test() extern double var;注意:若在全局變量定義前加上注意:若在全局變量定義前加上static,static,則該變量具有文件作用域。(只允許同一則該變量具有文件作用域。(只允許同一文件中的函數(shù)訪問)文件中的函數(shù)訪問)172.1 2.1 函數(shù)函數(shù) 局部變量局部變量 定義于函數(shù)內(nèi)部的變量。定義于函數(shù)內(nèi)部的變量。 局部變量具有塊作用域(從變量定義處開始,到塊的局部變量具有塊作用域(從變量定義處開始,到塊的結(jié)束處為止)結(jié)束處為止)如:如: int x; 182.1 2.1 函數(shù)函數(shù) 調(diào)用具有可選參數(shù)的函數(shù)時(shí)應(yīng)注意:調(diào)用具有可選參數(shù)的函數(shù)時(shí)應(yīng)注意:(1 1)若沒有給出對(duì)應(yīng)

13、于可選參數(shù)的實(shí)參,則以設(shè)定的默認(rèn)值)若沒有給出對(duì)應(yīng)于可選參數(shù)的實(shí)參,則以設(shè)定的默認(rèn)值作為實(shí)參。作為實(shí)參。(2 2)被省略的只能是最后的連續(xù)的若干個(gè)可選參數(shù)的實(shí)參。)被省略的只能是最后的連續(xù)的若干個(gè)可選參數(shù)的實(shí)參。如:如: int f(int a,char b,char c=Z, char s =”READY ”);則:則:f(3,a , b ) f(3, a , b , ” READY ”) f(3,a ) f(3, a , Z , ” READY ”) f( a , b , ” HELLO”) () f(3, a ,” HELLO”) ()192.1 2.1 函數(shù)函數(shù)六、內(nèi)聯(lián)函數(shù)六、內(nèi)聯(lián)函數(shù)

14、1 1、格式:在一般函數(shù)定義前加上保留字、格式:在一般函數(shù)定義前加上保留字inlineinline。如:如:inline int add2(int n) return n+2;2 2、作用:將函數(shù)體嵌入函數(shù)調(diào)用處、作用:將函數(shù)體嵌入函數(shù)調(diào)用處內(nèi)聯(lián)展開內(nèi)聯(lián)展開如:如:int temp=add2(6); int temp=(6+2);3 3、內(nèi)聯(lián)函數(shù)的函數(shù)定義必須在函數(shù)調(diào)用之前。、內(nèi)聯(lián)函數(shù)的函數(shù)定義必須在函數(shù)調(diào)用之前。202.1 2.1 函數(shù)函數(shù)七、函數(shù)重載七、函數(shù)重載 定義:允許定義同名的函數(shù)。定義:允許定義同名的函數(shù)。 條件:重載的函數(shù)必須在參數(shù)的條件:重載的函數(shù)必須在參數(shù)的數(shù)量、類型和順數(shù)量

15、、類型和順序序上有所不同。上有所不同。如:如:long add(long a,long b) return a+b; double add(double a,double b) return a+b; int add(int a) return a+8; int add(int a,int b) return a+b;212.1 2.1 函數(shù)函數(shù) 可選參數(shù)對(duì)函數(shù)重載的影響:可選參數(shù)對(duì)函數(shù)重載的影響: 若函數(shù)含有默認(rèn)參數(shù),則重載時(shí)應(yīng)保證在逐個(gè)去掉默認(rèn)參若函數(shù)含有默認(rèn)參數(shù),則重載時(shí)應(yīng)保證在逐個(gè)去掉默認(rèn)參數(shù)后,仍然在參數(shù)的數(shù)后,仍然在參數(shù)的數(shù)量、類型和順序數(shù)量、類型和順序上有所不同。上有所不同。例:

16、若有函數(shù)原型:例:若有函數(shù)原型: int fp(char c,int k=0,double d=100.0); 則下列函數(shù)中可以重載的是(則下列函數(shù)中可以重載的是( ) A、int fp( ); B、 void fp(char c); C、int fp(char,int); D、 void fp(char,int,int);A、D22主要內(nèi)容主要內(nèi)容 2.1 2.1 方法方法 2.2 2.2 類類 2.3 2.3 對(duì)象對(duì)象232.2 2.2 類類 類的概念類的概念 類的定義格式類的定義格式 類的成員訪問權(quán)限類的成員訪問權(quán)限 類和結(jié)構(gòu)類和結(jié)構(gòu) 類成員的訪問方法類成員的訪問方法 類的靜態(tài)成員類的靜

17、態(tài)成員 內(nèi)聯(lián)成員函數(shù)內(nèi)聯(lián)成員函數(shù) 含默認(rèn)參數(shù)的成員函數(shù)含默認(rèn)參數(shù)的成員函數(shù) 類類型的大小類類型的大小242.2 2.2 類類1 1、類的概念、類的概念 類:是一種抽象的數(shù)據(jù)類型,是同種對(duì)象集合與抽象,是具有共同屬性和行為的若干對(duì)象的統(tǒng)一描述體。在在C+中對(duì)象的類型稱為類中對(duì)象的類型稱為類(class)。類代表了某一批對(duì)象類代表了某一批對(duì)象的共性和特征。的共性和特征。類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例(instance)。 252.2 2.2 類類1 1、類的概念、類的概念具有具有共同屬性共同屬性和和共同行為共同行為的一類事物的抽象描述。的一類事物的抽象描述

18、。 共同屬性共同屬性成員屬性成員屬性 共同行為共同行為成員函數(shù)成員函數(shù)/ /成員方法成員方法262、類的定義格式:、類的定義格式:class 類名類名 private : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); public : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); protected:成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù);;class Student private : char Name20; float Math; float Chiese; public : float average; void SetName(char *name); void SetMath(float mat

19、h); void SetChinese(float ch); float GetAverage();分號(hào)不能少分號(hào)不能少2.2 類類27成員數(shù)據(jù)和成員函數(shù)成員數(shù)據(jù)和成員函數(shù)1 1、成員數(shù)據(jù)、成員數(shù)據(jù) OOOO中的中的成員數(shù)據(jù)成員數(shù)據(jù)相當(dāng)于面向過程程序設(shè)計(jì)中相當(dāng)于面向過程程序設(shè)計(jì)中變量變量的概念,它的概念,它抽象了類對(duì)象的屬性。抽象了類對(duì)象的屬性。 成員數(shù)據(jù)成員數(shù)據(jù)可以使用可以使用C+C+語言中的任何數(shù)據(jù)類型進(jìn)行定義,但要語言中的任何數(shù)據(jù)類型進(jìn)行定義,但要注意兩點(diǎn):注意兩點(diǎn): 成員數(shù)據(jù)成員數(shù)據(jù)不能在定義時(shí)對(duì)其進(jìn)行初始化不能在定義時(shí)對(duì)其進(jìn)行初始化,其初始化是在具體對(duì)象創(chuàng)建,其初始化是在具體對(duì)象創(chuàng)建

20、后由構(gòu)造函數(shù)完成,例如后由構(gòu)造函數(shù)完成,例如int i=0int i=0;/error/error 成員數(shù)據(jù)成員數(shù)據(jù)不能進(jìn)行遞歸定義不能進(jìn)行遞歸定義,即不能使用自身類的對(duì)象作為該類的數(shù),即不能使用自身類的對(duì)象作為該類的數(shù)據(jù)成員。例如:據(jù)成員。例如:class A public: A a;/ error28成員數(shù)據(jù)和成員函數(shù)成員數(shù)據(jù)和成員函數(shù)2 2、成員函數(shù)、成員函數(shù) OOOO中的中的成員函數(shù)成員函數(shù)相當(dāng)于面向過程程序設(shè)計(jì)中的相當(dāng)于面向過程程序設(shè)計(jì)中的函數(shù)函數(shù)的概念,它描述了類對(duì)象的行為。的概念,它描述了類對(duì)象的行為。 成員函數(shù)成員函數(shù)對(duì)外部給出了該類對(duì)象所提供服務(wù)的對(duì)外部給出了該類對(duì)象所提供服

21、務(wù)的接口接口,該,該接口接口是對(duì)封裝數(shù)據(jù)成員進(jìn)行操作的唯一途徑。是對(duì)封裝數(shù)據(jù)成員進(jìn)行操作的唯一途徑。29數(shù)據(jù)成員和成員函數(shù)數(shù)據(jù)成員和成員函數(shù)2 2、成員函數(shù)、成員函數(shù) 成員函數(shù)定義的一般格式為成員函數(shù)定義的一般格式為 :() 作用域運(yùn)算符作用域運(yùn)算符:用于聲明成員函數(shù)所從屬的類用于聲明成員函數(shù)所從屬的類30數(shù)據(jù)成員和成員函數(shù)數(shù)據(jù)成員和成員函數(shù)2 2、成員函數(shù)、成員函數(shù)class student private: long number; char name9; public: void showNumber(); void showName(); ;void student: showNumb

22、er() coutnumber;void student: showName() coutname;class student private: long number; char name9; public: void showNumber() coutnumber;void showName() coutname;312.2 2.2 類類3 3、類成員的訪問權(quán)限(訪問屬性)、類成員的訪問權(quán)限(訪問屬性) pubilc: :公用訪問屬性;公用訪問屬性; 成員可以為任意函數(shù)所訪問。成員可以為任意函數(shù)所訪問。 private: :私有訪問屬性;私有訪問屬性; 成員只能為該類的成員函數(shù)所訪問。成員

23、只能為該類的成員函數(shù)所訪問。 protected: :保護(hù)訪問屬性;保護(hù)訪問屬性; 成員只能為該類的成員函數(shù)以及該類的派生類中的成員函成員只能為該類的成員函數(shù)以及該類的派生類中的成員函數(shù)所訪問。數(shù)所訪問。32類的定義格式:類的定義格式:class 類名類名 private : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); public : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); protected:成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù);;用關(guān)鍵字用關(guān)鍵字priviate限定的成員稱為限定的成員稱為私有成員私有成員,私有成員私有成員限定在該類的內(nèi)部使用限定在該類的內(nèi)部使用,即,即只允許該類中的成員函數(shù)

24、使只允許該類中的成員函數(shù)使用私有的成員數(shù)據(jù)用私有的成員數(shù)據(jù);對(duì)于私有的成員函數(shù),只能被對(duì)于私有的成員函數(shù),只能被該該類內(nèi)的成員函數(shù)調(diào)用類內(nèi)的成員函數(shù)調(diào)用;類就相當(dāng)于私有成員的作用域。類就相當(dāng)于私有成員的作用域。33類的定義格式:類的定義格式:class 類名類名 private : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); public : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); protected:成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù);;#include #include using namespace std;class Student private: string id; ;int ma

25、in() Student s; s.id=2012201101; couts.idendl; error C2248: id : cannot access private member declared in class Student34類的定義格式:類的定義格式:class 類名類名 private : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); public : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); protected:成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù);;用關(guān)鍵字用關(guān)鍵字public限定的成員稱為限定的成員稱為公公有成員有成員;公有成員的數(shù)據(jù)或函數(shù)不受類的公有成員的數(shù)據(jù)或函數(shù)不受類的

26、限制,限制,可以在類內(nèi)或類外自由使用可以在類內(nèi)或類外自由使用;對(duì)類而言是透明的。對(duì)類而言是透明的。35類的定義格式:類的定義格式:class 類名類名 private : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); public : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); protected:成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù);;#include #include using namespace std;class Student private: string id; public: string name; void setID(string tID) id=tID; string getI

27、D() return id; ;int main() Student s; =wangyi; endl; s.setID(2012201101); couts.getID()endl;36類的定義格式:類的定義格式:class 類名類名 private : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); public : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); protected:成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù);;而用關(guān)鍵字而用關(guān)鍵字protected所限定的成所限定的成員稱為員稱為受保護(hù)成員受保護(hù)成員;只允許在只允許在類內(nèi)類內(nèi)及及該類的派生類該類的派生類中中使用

28、保護(hù)的數(shù)據(jù)或函數(shù);使用保護(hù)的數(shù)據(jù)或函數(shù);保護(hù)成員的作用域是保護(hù)成員的作用域是該類及該類該類及該類的派生類的派生類。37類的定義格式:類的定義格式:class 類名類名 private : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); public : 成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù); protected:成員數(shù)據(jù)成員數(shù)據(jù);成員函數(shù);成員函數(shù);;class Student private: string id; public: string name; protected: string course;class Master : public Student public: void setC

29、ourse() course=“OOPD; ;int main() Master m; m.setCourse(); coutm.coursenumber=1234;strcpy(wanghong-name,“wanghong);liwei-Classno= 200906 ;Student:Classno= 200906;456 6、靜態(tài)成員、靜態(tài)成員 6.1 6.1 靜態(tài)成員數(shù)據(jù)靜態(tài)成員數(shù)據(jù) 6.2 6.2 靜態(tài)成員函數(shù)靜態(tài)成員函數(shù)466.1 6.1 靜態(tài)成員數(shù)據(jù)靜態(tài)成員數(shù)據(jù) 靜態(tài)成員數(shù)據(jù)可以實(shí)現(xiàn)多個(gè)同類對(duì)象之間的靜態(tài)成員數(shù)據(jù)可以實(shí)現(xiàn)多個(gè)同類對(duì)象之間的數(shù)據(jù)共享數(shù)據(jù)共享。 它是某個(gè)類的所有對(duì)象

30、所共享的數(shù)據(jù)成員,編譯器將靜態(tài)成它是某個(gè)類的所有對(duì)象所共享的數(shù)據(jù)成員,編譯器將靜態(tài)成員數(shù)據(jù)存放在靜態(tài)存儲(chǔ)區(qū)。員數(shù)據(jù)存放在靜態(tài)存儲(chǔ)區(qū)。 靜態(tài)成員數(shù)據(jù)要在數(shù)據(jù)定義前加關(guān)鍵字靜態(tài)成員數(shù)據(jù)要在數(shù)據(jù)定義前加關(guān)鍵字static, ,定義格式為定義格式為 static 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 靜態(tài)成員數(shù)據(jù)名靜態(tài)成員數(shù)據(jù)名; 說明:說明: 類型標(biāo)識(shí)符可以基本數(shù)據(jù)類型,也可以是自定義數(shù)據(jù)類型,如結(jié)構(gòu)體類型標(biāo)識(shí)符可以基本數(shù)據(jù)類型,也可以是自定義數(shù)據(jù)類型,如結(jié)構(gòu)體、類等;、類等;class Tdate int year; static int month; /靜態(tài)成員數(shù)據(jù) static int day; /靜態(tài)成員數(shù)

31、據(jù);476.1 6.1 靜態(tài)成員數(shù)據(jù)靜態(tài)成員數(shù)據(jù) 靜態(tài)成員數(shù)據(jù)被定義后,必須對(duì)其進(jìn)行初始化。靜態(tài)成員數(shù)據(jù)被定義后,必須對(duì)其進(jìn)行初始化。 初始化在類體外進(jìn)行,一般放在該類的實(shí)現(xiàn)部分,也可以初始化在類體外進(jìn)行,一般放在該類的實(shí)現(xiàn)部分,也可以放在其他位置。放在其他位置。 靜態(tài)成員數(shù)據(jù)初始化的一般格式為:靜態(tài)成員數(shù)據(jù)初始化的一般格式為: 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 類名類名:靜態(tài)成員數(shù)據(jù)名靜態(tài)成員數(shù)據(jù)名=初始值;初始值;class Tdate int year; static int month; /靜態(tài)成員數(shù)據(jù) static int day; /靜態(tài)成員數(shù)據(jù);int Tdate:month=12;int

32、Tdate:day=13;486.1 6.1 靜態(tài)數(shù)據(jù)成員靜態(tài)數(shù)據(jù)成員 靜態(tài)成員數(shù)據(jù)是類的靜態(tài)成員,可以通過類名進(jìn)靜態(tài)成員數(shù)據(jù)是類的靜態(tài)成員,可以通過類名進(jìn)行訪問,格式為行訪問,格式為 類名類名:靜態(tài)成員數(shù)據(jù)名;靜態(tài)成員數(shù)據(jù)名;class Tdate public: int year; static int month; static int day; void showMonth();int Tdate:month=12;int Tdate:day=13;void Tdate:showMonth() coutTdate:month;496.2 6.2 靜態(tài)成員函數(shù)靜態(tài)成員函數(shù) 定義靜態(tài)成員函

33、數(shù)是為了同類的所有對(duì)象之間共享定義靜態(tài)成員函數(shù)是為了同類的所有對(duì)象之間共享數(shù)據(jù)。在定義類時(shí),若在某個(gè)成員函數(shù)前加關(guān)鍵字?jǐn)?shù)據(jù)。在定義類時(shí),若在某個(gè)成員函數(shù)前加關(guān)鍵字staticstatic,說明此成員函數(shù)是,說明此成員函數(shù)是靜態(tài)成員函數(shù)靜態(tài)成員函數(shù)。 在在靜態(tài)成員函數(shù)體內(nèi)靜態(tài)成員函數(shù)體內(nèi),可以通過,可以通過對(duì)象名對(duì)象名或或指針變量指針變量直接訪問所屬類的直接訪問所屬類的靜態(tài)成員靜態(tài)成員,但不能訪問,但不能訪問非靜態(tài)成非靜態(tài)成員員。506.2 6.2 靜態(tài)成員函數(shù)靜態(tài)成員函數(shù)class Tdate public: int year; static int month; static int day

34、; void showMonth(); static int getDay();/靜態(tài)成員函數(shù);int Tdate:month=12;int Tdate:day=13;void Tdate:showMonth() coutTdate:month;int Tdate:getDay() return Tdate:day;512.2 2.2 類類7 7、內(nèi)聯(lián)成員函數(shù)、內(nèi)聯(lián)成員函數(shù)成員函數(shù)在類中定義:默認(rèn)為是內(nèi)聯(lián)的。成員函數(shù)在類中定義:默認(rèn)為是內(nèi)聯(lián)的。成員函數(shù)在類外定義:在函數(shù)定義前加成員函數(shù)在類外定義:在函數(shù)定義前加inlineinline。class CC int a; public: void

35、Init(int aa) ; int GetData( );cx;inline void CC Init(int aa)a=aa;inline int CC GetData( )return a;522.2 2.2 類類8 8、含默認(rèn)參數(shù)的成員函數(shù)、含默認(rèn)參數(shù)的成員函數(shù)如:如:void CE SetValue(int x1,int x2=0,int x3=1) a=x1; b=x2; c=x3; 則:則:ex. SetValue(4,5) ex. SetValue(4,5,1) ex. SetValue(4) ex. SetValue(4,0,1)532.2 2.2 類類9 9、類類型的大小、

36、類類型的大小類類型的大小等于所有數(shù)據(jù)成員所占的字節(jié)的和。類類型的大小等于所有數(shù)據(jù)成員所占的字節(jié)的和。例例: class CC int a; public: void Init(int aa)a=aa; int GetData( )return a; cx; sizeof(CC)=sizeof(a)=4個(gè)字節(jié)個(gè)字節(jié)54主要內(nèi)容主要內(nèi)容 2.1 2.1 方法方法 2.2 2.2 類類 2.3 2.3 對(duì)象對(duì)象55 在定義類時(shí),只是定義了一種在定義類時(shí),只是定義了一種數(shù)據(jù)類型數(shù)據(jù)類型,即即說說明程序中可能會(huì)出現(xiàn)該類型的數(shù)據(jù),明程序中可能會(huì)出現(xiàn)該類型的數(shù)據(jù),并不為類并不為類分配存儲(chǔ)空間。分配存儲(chǔ)空間。

37、 只有在定義了屬于類的變量后,系統(tǒng)才會(huì)為只有在定義了屬于類的變量后,系統(tǒng)才會(huì)為類類的變量的變量分配空間。分配空間。 類的變量稱之為對(duì)象。類的變量稱之為對(duì)象。 對(duì)象是類的實(shí)例對(duì)象是類的實(shí)例,定義對(duì)象之前,一定要先說,定義對(duì)象之前,一定要先說明該對(duì)象的類。明該對(duì)象的類。2.3 2.3 對(duì)象的定義對(duì)象的定義56不同對(duì)象占據(jù)內(nèi)存中的不同區(qū)域,它們所保存的數(shù)據(jù)各不相同,但對(duì)成員數(shù)據(jù)進(jìn)行操作的成員函數(shù)的程序代碼均是一樣的。 類名 對(duì)象1,對(duì)象2,.;Student st1,st2; 對(duì)象的定義格式:類名對(duì)象名在建立對(duì)象時(shí),只為對(duì)象分配用于保存數(shù)據(jù)成員的內(nèi)存空間,而成員函數(shù)的代碼為該類的每一個(gè)對(duì)象所共享。

38、57對(duì)象的定義方法同結(jié)構(gòu)體定義變量的方法一樣。class A float x,y;public: void setXY( float a, float b ) x=a; y=b; void print() coutxtyendl; a1,a2;void main() A a3,a4;定義全局對(duì)象定義局部對(duì)象58對(duì)象的使用 一個(gè)對(duì)象的成員就是該對(duì)象的類所定義的一個(gè)對(duì)象的成員就是該對(duì)象的類所定義的成員,有成員,有成員數(shù)據(jù)和成員函數(shù)成員數(shù)據(jù)和成員函數(shù),引用時(shí)同,引用時(shí)同結(jié)構(gòu)體變量類似,用結(jié)構(gòu)體變量類似,用“. .”運(yùn)算符。運(yùn)算符。59class A float x,y; public: float

39、m,n; void setXY( float a, float b ) x=a; y=b; void print() coutxtyendl; ;void main() A a1,a2; /定義對(duì)象 a1.m=10; a1.n=20; /為公有成員數(shù)據(jù)賦值 a1.setXY(2.0 , 5.0); /為私有成員數(shù)據(jù)賦值 a1.print();輸出: 2 5a1nmyx10202.05.0a2nmyx如何為a2的數(shù)據(jù)賦值?60對(duì)象的使用 用成員選擇運(yùn)算符用成員選擇運(yùn)算符“.”.”只能訪問對(duì)象的只能訪問對(duì)象的公有成員公有成員,而不能訪問對(duì)象的私有成員或,而不能訪問對(duì)象的私有成員或保護(hù)成員。保護(hù)成員

40、。 若要訪問對(duì)象的私有的數(shù)據(jù)成員,只能通若要訪問對(duì)象的私有的數(shù)據(jù)成員,只能通過對(duì)象的公有成員函數(shù)來獲取過對(duì)象的公有成員函數(shù)來獲取。 61class A float x,y; public: float m,n; void setXY( float a, float b ) x=a; y=b; void print() coutxtyendl; ;void main() A a1,a2; a1.m=10; a1.n=20; /為公有成員數(shù)據(jù)賦值 a1.x=2; a1.y=5; a1.setXY(2.0,5.0); a1.print();必須通過類內(nèi)公有函數(shù)訪問私有數(shù)據(jù)成員非法,私有成員不能在類外訪問62同類型的對(duì)象

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論