2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩171頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、類和對象-1,崔克彬ncepuckb@163.com,目錄,5.1 類的定義 5.2 對象的定義 5.3 對象的初始化 5.4 成員函數(shù)的特性 5.5 靜態(tài)成員 5.6 友元 5.7 類的作用域 5.8 局部類和嵌套類(自學) 5.9 對象的生存周期,5.1 類的定義,類的定義: 類是一種復雜的數(shù)據(jù)類型,它是將不同的類型的數(shù)據(jù)和與這些數(shù)據(jù)相關的操作封裝在一起的集合體。類是面向對

2、象程序設計的核心 ;類是一種用戶自定義類型,是一種通過抽象數(shù)據(jù)類型的方法由用戶構造的新型的數(shù)據(jù)類型; 類的結構由其內(nèi)部數(shù)據(jù)結構和相關的操作決定,并通過操作接口來描述,操作接口又被稱為這類對象向其他對象提供的服務。,5.1 類的定義,類的定義格式: class { public:

3、 private: }; ,5.1 類的定義,類的定義格式: 說明: 類的成員分為數(shù)據(jù)成員和成員函數(shù)類的成員的訪問權限分三類:公有的(public)、私有的(private)和保護的(protected); public、priva

4、te和protected被稱為訪問權限修飾符/訪問控制修飾符,說明類或成員的訪問權限: 公有成員不僅可以被類的成員函數(shù)引用,而且可以在程序中被引用 => 公有成員提供了類的接口功能 私有成員只能被類的成員或友元函數(shù)所引用,在程序中不可訪問,5.1 類的定義,類的定義格式: 說明:類的成員函數(shù)可以在類體內(nèi)定義,也可以在類體外定義。當成員函數(shù)在類體外定義時,需定義為以下格式: ::

5、() :: —— 作用域運算符,用來標識該成員函數(shù)屬于哪個類。,5.1 類的定義,例5.1:定義一個關于日期的類,類的說明部分: class TDate { public: void SetDate(int y,int m,int d); int IsLeapYear( ); void Print( );

6、 private: int year,month,day; },類中定義了6個類成員:3個成員函數(shù),3個數(shù)據(jù)成員,;,5.1 類的定義,例5.1:定義一個關于日期的類,成員函數(shù)如果定義在類體外,需要在函數(shù)頭前加上函數(shù)所屬的類的標識符,使用作用域運算符::,類的實現(xiàn)部分,,,,,,,,,,類的公有成員可訪問類的私有成員,5.1 類的定義,例5.1:定義一個關于日期的類,成

7、員函數(shù)如果定義在類體內(nèi),則與一般函數(shù)的定義一樣,類的另一種實現(xiàn)方式,;,5.1 類的定義,注意事項: ① 在類體內(nèi)不允許對所定義的數(shù)據(jù)成員進行初始化操作,,×,② 類的數(shù)據(jù)成員的類型可以是普通的數(shù)據(jù)類型:整型、浮點型、字符型、數(shù)組、指針和引用等,也可以為對象——另一個類的對象可以作為該類的成員,該類的指針或引用也可以作為該類的成員,但該類自身的對象不可以作為該類的成員,5.1 類的定義,注意事項:,,√,,5.1 類的

8、定義,注意事項:,,,√,×,√,5.1 類的定義,注意事項:③ 通常將對于類的說明部分或整個類的定義部分放到一個單獨的頭文件中: 例如,可將之前定義的TDate類放到名為tdate.h的頭文件中,目錄,5.1 類的定義 5.2 對象的定義 5.3 對象的初始化 5.4 成員函數(shù)的特性 5.5 靜態(tài)成員 5.6 友元 5.7 類的作用域 5.8 局部類和嵌套類(自學)

9、 5.9 對象的生存周期,5.2 對象的定義,對象是類的實例,類是某一類對象的抽象 對象屬于某個已知類,定義對象之前要先定義該對象的類,例: TDate date1,date2,*Pdate,date[31];,對象的定義格式: ,5.2 對象的定義,對象成員(數(shù)據(jù)成員/成員函數(shù))的表示方法: 一般對象: ·

10、 · ()例: TDate date1; date1.year,date1.month,date1.day date1.SetDate(y, m, d),5.2 對象的定義,對象成員(數(shù)據(jù)成員/成員函數(shù))的表示方法: 指向對象的指針:方式①: —> —> ()例: TDat

11、e ﹡Pdate; Pdate—>year, Pdate—>month, Pdate—>day Pdate—>SetDate(y, m, d)方式②: (﹡) · (﹡) · ()例: TDate *Pdate;(﹡Pdate) · year, (﹡Pdate) · mont

12、h, (﹡Pdate) · day (﹡Pdate) · SetDate(y, m, d),5.2 對象的定義,對象成員(數(shù)據(jù)成員/成員函數(shù))的表示方法:對象引用: · · ()例: TDate date1,&rdate=date1; rdate.year, rdate.month, rdate.day

13、 rdate.SetDate(y, m, d) 說明: 同一個類創(chuàng)建的不同對象,其數(shù)據(jù)結構相同——系統(tǒng)為其分配相同長度的內(nèi)存單元。但其內(nèi)容有可能不同; 同一個類創(chuàng)建的不同對象,共享類中的成員函數(shù) =>系統(tǒng)只為所定義的對象提供數(shù)據(jù)成員的內(nèi)存空間,5.2 對象的定義,例5.1:分析程序的輸出結果,5.2 對象的定義,例5.1:分析程序的輸出結果,//系統(tǒng)只為所定義的對象提供數(shù)據(jù)成員的內(nèi)存空間,,5.2 對象的定義,例

14、5.1:分析程序的輸出結果,//系統(tǒng)只為所定義的對象提供數(shù)據(jù)成員的內(nèi)存空間,//對象調用類的成員函數(shù),,1996,5,4,5.2 對象的定義,例5.1:分析程序的輸出結果,//系統(tǒng)只為所定義的對象提供數(shù)據(jù)成員的內(nèi)存空間,//對象調用類的成員函數(shù),,1996,5,4,1998,4,9,5.2 對象的定義,例5.1:分析程序的輸出結果,//系統(tǒng)只為所定義的對象提供數(shù)據(jù)成員的內(nèi)存空間,//對象調用類的成員函數(shù),,1996,5,4,1998

15、,4,9,int leap,,,date1.year,1,5.2 對象的定義,例5.1:分析程序的輸出結果,//系統(tǒng)只為所定義的對象提供數(shù)據(jù)成員的內(nèi)存空間,//對象調用類的成員函數(shù),1996,5,4,1998,4,9,int leap,1,,,,,5.2 對象的定義,例5.1:分析程序的輸出結果,//系統(tǒng)只為所定義的對象提供數(shù)據(jù)成員的內(nèi)存空間,//對象調用類的成員函數(shù),1996,5,4,1998,4,9,int leap,1,,,,

16、,5.2 對象的定義,例5.1:分析程序的輸出結果,//系統(tǒng)只為所定義的對象提供數(shù)據(jù)成員的內(nèi)存空間,//對象調用類的成員函數(shù),結論?,1、在程序中,可以訪問類的公有成員2、類的成員函數(shù)只能通過該類定義的對象來調用,5.2 對象的定義,例5.1:分析程序的輸出結果,//系統(tǒng)只為所定義的對象提供數(shù)據(jù)成員的內(nèi)存空間,//對象調用類的成員函數(shù),問題?,×,5.2 對象的定義,例5.1:分析程序的輸出結果,//系統(tǒng)只為所定義的對

17、象提供數(shù)據(jù)成員的內(nèi)存空間,//對象調用類的成員函數(shù),結論?,類的私有成員不能被程序所訪問,只能被類的成員函數(shù)所訪問,5.2 對象的定義,例5.2:分析程序的輸出結果,5.2 對象的定義,例5.2:分析程序的輸出結果,,,數(shù)據(jù)成員,5.2 對象的定義,例5.2:分析程序的輸出結果,,3,5,5.2 對象的定義,例5.2:分析程序的輸出結果,,3,5,8,10,5.2 對象的定義,例5.2:分析程序的輸出結果,3,5,8,10,,

18、5,6,5.2 對象的定義,例5.2:分析程序的輸出結果,3,5,8,10,,5,6,9,8,5.2 對象的定義,例5.2:分析程序的輸出結果,3,5,8,10,5,6,9,8,,,5.2 對象的定義,例5.2:分析程序的輸出結果,3,5,8,10,5,6,9,8,,,目錄,5.1 類的定義 5.2 對象的定義 5.3 對象的初始化 5.4 成員函數(shù)的特性 5.5 靜態(tài)成員 5.6 友元 5.7

19、 類的作用域 5.8 局部類和嵌套類(自學) 5.9 對象的生存周期,5.3 對象的初始化,5.3.1 構造函數(shù)和析構函數(shù) 5.3.2 缺省構造函數(shù)和缺省析構函數(shù) 5.3.3 拷貝初始化構造函數(shù),5.3 對象的初始化,回顧:TDate類與TPoint類初始化對象的方式,,,5.3 對象的初始化,回顧:TDate類與TPoint類初始化對象的方式,,,5.3 對象的初始化,總結: 對對象進行初始化,實際就是對對象

20、的數(shù)據(jù)成員(屬性)進行初始化操作;類中都定義了一類函數(shù)實現(xiàn)對對象的初始化操作——即為對象的數(shù)據(jù)成員賦初始值(例如TDate::SetDate(int y,int m,int d)函數(shù),TPoint::SetPoint(int x,int y)函數(shù))。,類中是否有一類函數(shù)專門實現(xiàn)對對象的初始化?這類函數(shù)是否有特定的語法規(guī)則?,5.3 對象的初始化,在創(chuàng)建對象時對對象進行初始化操作的類的成員函數(shù)稱為構造函數(shù) 在對象刪除時對對象進行釋放

21、操作的類的成員函數(shù)稱為析構函數(shù),構造函數(shù)和析構函數(shù),以日期類TDate類為例,構造該類的構造函數(shù)和析構函數(shù),5.3 對象的初始化,構造函數(shù)的特點: 構造函數(shù)是類的成員函數(shù),可以定義在類體內(nèi),也可以定義在類體外; 構造函數(shù)的函數(shù)名必須與類名相同;構造函數(shù)的返回值類型不指定說明,具有隱含的函數(shù)返回值,該值由系統(tǒng)內(nèi)部使用;,TDate類的構造函數(shù):函數(shù)名為TDate,TDate類的構造函數(shù):TDate函數(shù)不指明返回值類型,構造函數(shù)和

22、析構函數(shù),5.3 對象的初始化,構造函數(shù)的特點: 構造函數(shù)可以有一個參數(shù),也可以有多個參數(shù);,構造函數(shù)的作用是對類的數(shù)據(jù)成員進行初始化操作,所以定義TDate類的構造函數(shù)如下:class TDate{ public: TDate(int y,int m,int d) { year=y; month=m; day=d;} private: int year,month

23、,day;};,構造函數(shù)和析構函數(shù),5.3 對象的初始化,構造函數(shù)的特點:構造函數(shù)可以重載,即同一個類中可以定義多個參數(shù)不同的構造函數(shù); 程序中不能直接調用構造函數(shù),在創(chuàng)建對象時系統(tǒng)自動調用構造函數(shù)。,void main(){ TDate date1(2000,3,10);},TDate(int y,int m,int d) { year=y; month=m; day=d;},//對對象進行初始

24、化操作,,系統(tǒng)自動調用類的構造函數(shù),構造函數(shù)和析構函數(shù),5.3 對象的初始化,析構函數(shù)的特點:析構函數(shù)是類的成員函數(shù),可以定義在類體內(nèi),也可以定義在類體外; 析構函數(shù)的函數(shù)名與類名相同,前面加~字符用來與構造函數(shù)進行區(qū)別;析構函數(shù)不指定函數(shù)的返回值類型,也沒有參數(shù); 析構函數(shù)不可以重載,即一個類中只能定義一個析構函數(shù);,構造函數(shù)和析構函數(shù),TDate類的析構函數(shù):函數(shù)名為~TDate,TDate類的析構函數(shù):定義為~TDat

25、e( );,5.3 對象的初始化,析構函數(shù)的特點:析構函數(shù)可以被程序調用,也可以由系統(tǒng)調用自動。在下面兩種情況下,析構函數(shù)會被系統(tǒng)自動調用: 如果一個對象被定義在函數(shù)體內(nèi),則當函數(shù)結束時,該對象的析構函數(shù)會被自動調用; 如果一個對象是用new運算符被動態(tài)創(chuàng)建的,則在使用delete運算符釋放它時,delete將會自動調用析構函數(shù)。,構造函數(shù)和析構函數(shù),void main(){ TDate date1(2000,3,10

26、);},,系統(tǒng)自動調用類的析構函數(shù),~TDate( ){ },5.3 對象的初始化,重新定義日期TDate類(保存在tdate.h中),,,,5.3 對象的初始化,例5.3:分析程序的輸出結果,,,系統(tǒng)自動調用類的構造函數(shù),ty.year=1998,ty.month=4,ty.day=9,輸出:Constructor called.,,輸出:Constructor called.,5.3 對象的初始化,例5.3:分析程序的輸出結果

27、,,系統(tǒng)自動調用類的構造函數(shù),ty.year=1998,ty.month=4,ty.day=9,tm.year=1998,tm.month=4,tm.day=10,輸出:Constructor called.Constructor called.,輸出:Constructor called.Constructor called.,5.3 對象的初始化,例5.3:分析程序的輸出結果,對象調用類的成員函數(shù),ty.year=1998,

28、ty.month=4,ty.day=9,tm.year=1998,tm.month=4,tm.day=10,,,,today.year,,,today.month,,,today.day,輸出:Constructor called.Constructor called.today is 1998.4.9,5.3 對象的初始化,例5.3:分析程序的輸出結果,ty.year=1998,ty.month=4,ty.day=9,tm.ye

29、ar=1998,tm.month=4,tm.day=10,,,tomor.year,,,tomor.month,,,tomor.day,輸出:Constructor called.Constructor called.today is 1998.4.9tomorrow is 1998.4.10,,輸出:Constructor called.Constructor called.today is 1998.4.9tomor

30、row is 1998.4.10,5.3 對象的初始化,例5.3:分析程序的輸出結果,ty.year=1998,ty.month=4,ty.day=9,tm.year=1998,tm.month=4,tm.day=10,輸出:Constructor called.Constructor called.today is 1998.4.9tomorrow is 1998.4.10Destructor called.,系統(tǒng)自動調用類

31、的析構函數(shù),,,,,輸出:Constructor called.Constructor called.today is 1998.4.9tomorrow is 1998.4.10,5.3 對象的初始化,例5.3:分析程序的輸出結果,ty.year=1998,ty.month=4,ty.day=9,tm.year=1998,tm.month=4,tm.day=10,輸出:Constructor called.Construct

32、or called.today is 1998.4.9tomorrow is 1998.4.10Destructor called.,系統(tǒng)自動調用類的析構函數(shù),,,,,輸出:Constructor called.Constructor called.today is 1998.4.9tomorrow is 1998.4.10Destructor called.Destructor called.,,,,5.3 對象

33、的初始化,5.3.1 構造函數(shù)和析構函數(shù) 5.3.2 缺省構造函數(shù)和缺省析構函數(shù) 5.3.3 拷貝初始化構造函數(shù),5.3 對象的初始化,缺省構造函數(shù): 在定義類時沒有定義任何構造函數(shù),則編譯器自動生成一個不帶參數(shù)的缺省構造函數(shù): ::( ) { } 缺省析構函數(shù): 在定義類時沒有定義任何析構函數(shù),則編譯

34、器自動生成一個不帶參數(shù)的缺省析構函數(shù): ::( ) { },缺省構造函數(shù)和缺省析構函數(shù),說明:用缺省構造函數(shù)對對象初始化時,對 象的所有數(shù)據(jù)成員都初始化為零或空,說明:缺省析構函數(shù)是空函數(shù),5.3 對象的初始化,5.3.1 構造函數(shù)和析構函數(shù) 5.3.2 缺省構造函數(shù)和缺省析構函數(shù) 5.3.3 拷貝初始化構造函數(shù),5

35、.3 對象的初始化,當用一個已知的對象來初始化同類的另一個被創(chuàng)建的對象時,可調用拷貝初始化構造函數(shù)。 格式:::(const &),拷貝初始化構造函數(shù),5.3 對象的初始化,當用一個已知的對象來初始化同類的另一個被創(chuàng)建的對象時,可調用拷貝初始化構造函數(shù)。格式:::(const &),拷貝初始化構造函數(shù),例,定義TDate類的拷貝初始化構造函數(shù):TDate(const TDate &d){ year=

36、d.year; month=d.month; day=d.day; },拷貝初始化構造函數(shù)也是構造函數(shù),它將一個已知對象的數(shù)據(jù)成員的值拷貝給創(chuàng)建的同類的另一個對象; 該函數(shù)只有一個參數(shù),是對同類進行賦值的對象的引用; 每個類都需有一個拷貝初始化構造函數(shù);如果類中沒有說明,則編譯系統(tǒng)自動生成一個缺省的拷貝初始化構造函數(shù),作為該類的公有成員。,5.3 對象的初始化,例5.4:重新定義點類TPoint (存到tpoint1.h中),,,5

37、.3 對象的初始化,例5.5:分析程序輸出結果,,,5.3 對象的初始化,例5.5:分析程序輸出結果,,輸出:Copy_initialization Constructor called.,5.3 對象的初始化,例5.5:分析程序輸出結果,,,輸出:Copy_initialization Constructor called.,輸出:Copy_initialization Constructor called.P2=5,7,5.

38、3 對象的初始化,例5.5:分析程序輸出結果,輸出:Copy_initialization Constructor called.P2=5,7,,輸出:Copy_initialization Constructor called.P2=5,7Destructor called.,5.3 對象的初始化,例5.5:分析程序輸出結果,輸出:Copy_initialization Constructor called.P2=5,7

39、Destructor called.,,輸出:Copy_initialization Constructor called.P2=5,7Destructor called.Destructor called.,5.3 對象的初始化,例5.5:分析程序輸出結果,,,5.3 對象的初始化,例5.5:分析程序輸出結果,,輸出:Copy_initialzation Constrctor called.,5.3 對象的初始化,例5.5

40、:分析程序輸出結果,,輸出:Copy_initialzation Constrctor called.,5.3 對象的初始化,例5.5:分析程序輸出結果,,輸出:Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.,5.3 對象的初始化,例5.5:分析程

41、序輸出結果,輸出:Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.Ok,5.3 對象的初始

42、化,例5.5:分析程序輸出結果,輸出:Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.Ok

43、,5.3 對象的初始化,例5.5:分析程序輸出結果,輸出:Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor

44、called.ok,,x=30,5.3 對象的初始化,例5.5:分析程序輸出結果,輸出:Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialza

45、tion Constrctor called.ok,x=30,,y=55,5.3 對象的初始化,例5.5:分析程序輸出結果,輸出:Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor c

46、alled.Copy_initialzation Constrctor called.ok,x=30,y=55,,5.3 對象的初始化,例5.5:分析程序輸出結果,輸出:Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.,輸出:Copy_initi

47、alzation Constrctor called.Copy_initialzation Constrctor called.ok,x=30,y=55,,由于不能返回main主函數(shù),所以將R的值暫時賦給一個匿名對象。需要調用拷貝初始化構造函數(shù),5.3 對象的初始化,例5.5:分析程序輸出結果,輸出:Copy_initialzation Constrctor called.,輸出:Copy_initialzation Cons

48、trctor called.Copy_initialzation Constrctor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.ok,x=30,y=55,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor ca

49、lled.okCopy_initialzation Constrctor called.,5.3 對象的初始化,例5.5:分析程序輸出結果,x=30,y=55,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.,輸出:Copy_initialz

50、ation Constrctor called.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.,調用兩次,分別釋放對象R和對象Q,,5.3 對象的初始化,例5.5:分析程序輸出結果,x=30,y=55,輸出:Copy_initialzation Co

51、nstrctor called.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.,,5.3 對象的初始化,例5.5:分析程序輸出結果,x=30,y=55,輸出:Copy_initialzation Constrctor called.Copy_ini

52、tialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.,5.3 對象的初始化,例5.5:分析程序輸出結果,x=30,y=55,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor call

53、ed.okCopy_initialzation Constrctor called.Destructor called.Destructor called.,,調用一次,釋放匿名對象A,賦值結束,需要釋放匿名對象A,5.3 對象的初始化,例5.5:分析程序輸出結果,x=30,y=55,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor c

54、alled.okCopy_initialzation Constrctor called.Destructor called.Destructor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor ca

55、lled.Destructor called.Destructor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.Destructor called

56、.,5.3 對象的初始化,例5.5:分析程序輸出結果,,,5.3 對象的初始化,例5.5:分析程序輸出結果,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.Destruc

57、tor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.Destructor called.P=30,55,5.3 對象的初始化,例5.5:分析程序輸出

58、結果,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.Destructor called.,輸出:Copy_initialzation Constrctor calle

59、d.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.Destructor called.P=30,55,,調用三次,分別釋放對象N、對象P和對象M,5.3 對象的初始化,例5.5:分析程序輸出結果,輸出:Copy_initialzation Con

60、strctor called.Copy_initialzation Constrctor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.Destructor called.,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrc

61、tor called.okCopy_initialzation Constrctor called.Destructor called.Destructor called.Destructor called.P=30,55,輸出:Copy_initialzation Constrctor called.Copy_initialzation Constrctor called.okCopy_initialzation

62、Constrctor called.Destructor called.Destructor called.Destructor called.P=30,55Destructor called.Destructor called.Destructor called.,5.3 對象的初始化,拷貝初始化構造函數(shù),拷貝初始化構造函數(shù)的功能就是用一個已知的對象來初始化另一個對象;調用拷貝初始化構造函數(shù)的三種情況: 明確表示由一

63、個對象初始化另一個對象時: 例:TPoint P2(P1); 當對象作為函數(shù)參數(shù)傳遞給函數(shù)形參時: 例:P=f(N); 當對象作為函數(shù)返回值時: 例:return R;,目錄,5.1 類的定義 5.2 對象的定義 5.3 對象的初始化 5.4 成員函數(shù)的特性 5.5 靜態(tài)成員 5.6 友元 5.7 類的作用域 5.

64、8 局部類和嵌套類(自學) 5.9 對象的生存周期,5.4 成員函數(shù)的特性,一般的成員函數(shù)都可以重載,但析構函數(shù)不可重載,重載性,例5.7:分析程序輸出結果,,5.4 成員函數(shù)的特性,例5.7:分析程序輸出結果,,,,,5.4 成員函數(shù)的特性,例5.7:分析程序輸出結果,,,,輸出:a=10,20,5.4 成員函數(shù)的特性,例5.7:分析程序輸出結果,,,,輸出:a=10,20,輸出:a=10,20b=4,16,

65、5.4 成員函數(shù)的特性,例5.7:分析程序輸出結果,,,,b.X=4,b.Y=16,i,,i=30,5.4 成員函數(shù)的特性,例5.7:分析程序輸出結果,,,,,b.X=4,b.Y=16,i=30,j,j=12,5.4 成員函數(shù)的特性,例5.7:分析程序輸出結果,,,,,k,k=10,5.4 成員函數(shù)的特性,例5.7:分析程序輸出結果,k=10,輸出:a=10,20b=4,16,輸出:a=10,20b=4,163012

66、10,5.4 成員函數(shù)的特性,設置參數(shù)的缺省值,一般的成員函數(shù)和構造函數(shù)均可被設置參數(shù)的缺省值,回顧:參數(shù)的缺省值,給形參賦默認值(缺省值),可以是數(shù)值,也可以是任意表達式; 函數(shù)調用時,編譯器按從左向右的順序將實參與形參結合,當實參的數(shù)目不足時,編譯器將用函數(shù)說明或定義時形參的默認值補足所缺少的實參; 一個指定了默認值的參數(shù)右邊不能出現(xiàn)沒有指定默認值的參數(shù)。,5.4 成員函數(shù)的特性,例5.8:分析程序輸出結果,,構造函數(shù)設置

67、參數(shù)的缺省值,5.4 成員函數(shù)的特性,例5.8:分析程序輸出結果,,,5.4 成員函數(shù)的特性,例5.8:分析程序輸出結果,,,,輸出:X=3,5,7Y=9,11,7Z=13,15,17,目錄,5.1 類的定義 5.2 對象的定義 5.3 對象的初始化 5.4 成員函數(shù)的特性 5.5 靜態(tài)成員 5.6 友元 5.7 類的作用域 5.8 局部類和嵌套類(自學) 5.9 對象的生存

68、周期,5.5 靜態(tài)成員,思考,1、類的成員函數(shù)之間如何實現(xiàn)數(shù)據(jù)的共享? 例:M::f1(int x) { sum+=x;} … M::f2(int y)

溫馨提示

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

評論

0/150

提交評論