程序設(shè)計類與對象(1)_第1頁
程序設(shè)計類與對象(1)_第2頁
程序設(shè)計類與對象(1)_第3頁
程序設(shè)計類與對象(1)_第4頁
程序設(shè)計類與對象(1)_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.C/C+程序設(shè)計教程2022-3-6.2第第1章章 類和對象類和對象 應(yīng)該重點掌握以下內(nèi)容:應(yīng)該重點掌握以下內(nèi)容:n 面向?qū)ο蟪绦蛟O(shè)計的基本特點面向?qū)ο蟪绦蛟O(shè)計的基本特點n 類和對象的定義和使用類和對象的定義和使用n 構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)n 拷貝構(gòu)造函數(shù)和堆對象、對象數(shù)組拷貝構(gòu)造函數(shù)和堆對象、對象數(shù)組n 友元函數(shù)和友元類友元函數(shù)和友元類2022-3-6.3第第1 1章章 類和對象類和對象n1.1 1.1 面向?qū)ο蟪绦蛟O(shè)計概述面向?qū)ο蟪绦蛟O(shè)計概述 n1.2 1.2 面向?qū)ο蟪绦蛟O(shè)計的基本概念面向?qū)ο蟪绦蛟O(shè)計的基本概念n1.3 1.3 類和對象的定義類和對象的定義 n1.4 1.

2、4 構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù) n1.5 1.5 類和對象的進一步應(yīng)用類和對象的進一步應(yīng)用 n1.6 1.6 靜態(tài)成員靜態(tài)成員n1.7 1.7 友元函數(shù)和友元類友元函數(shù)和友元類n1.8 string1.8 string類類n1.9 1.9 綜合應(yīng)用實例綜合應(yīng)用實例2022-3-6.41.1 1.1 面向?qū)ο蟪绦蛟O(shè)計概述面向?qū)ο蟪绦蛟O(shè)計概述一、什么是面向?qū)ο蟪绦蛟O(shè)計一、什么是面向?qū)ο蟪绦蛟O(shè)計 面向?qū)ο蟪绦蛟O(shè)計(面向?qū)ο蟪绦蛟O(shè)計(Object Oriented Programming-Object Oriented Programming-簡稱簡稱OOPOOP)是軟件系統(tǒng)設(shè)計與實現(xiàn)的新方

3、法,這種新方法即吸取了結(jié)構(gòu)化程序設(shè)計是軟件系統(tǒng)設(shè)計與實現(xiàn)的新方法,這種新方法即吸取了結(jié)構(gòu)化程序設(shè)計的全部優(yōu)點,又考慮了現(xiàn)實世界與面向?qū)ο罂臻g的映射關(guān)系,所追求的的全部優(yōu)點,又考慮了現(xiàn)實世界與面向?qū)ο罂臻g的映射關(guān)系,所追求的目標(biāo)是將現(xiàn)實世界的問題求解盡可能的簡單化。目標(biāo)是將現(xiàn)實世界的問題求解盡可能的簡單化。二、面向?qū)ο蟪绦蛟O(shè)計的基本思路二、面向?qū)ο蟪绦蛟O(shè)計的基本思路 例如:生產(chǎn)一臺電腦例如:生產(chǎn)一臺電腦2022-3-6.51.2 1.2 面向?qū)ο蟪绦蛟O(shè)計的基本概念面向?qū)ο蟪绦蛟O(shè)計的基本概念 1.2.1 1.2.1 類類 1.2.2 1.2.2 對象對象1.2.3 1.2.3 封裝(封裝(enca

4、psulationencapsulation)與數(shù)據(jù)隱藏)與數(shù)據(jù)隱藏1.2.4 1.2.4 繼承(繼承(inheritanceinheritance) 1.2.5 1.2.5 多態(tài)性(多態(tài)性(polymorphismpolymorphism) 1.2.6 1.2.6 消息消息2022-3-6.61.2.1 1.2.1 類類 一、現(xiàn)實世界與面向?qū)ο笙到y(tǒng)對應(yīng)關(guān)系一、現(xiàn)實世界與面向?qū)ο笙到y(tǒng)對應(yīng)關(guān)系 二、什么是類二、什么是類1. 1. 類是一種復(fù)雜的數(shù)據(jù)類型,它將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的類是一種復(fù)雜的數(shù)據(jù)類型,它將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起。類是對現(xiàn)實世界客觀事物的抽象。操

5、作封裝在一起。類是對現(xiàn)實世界客觀事物的抽象。2. 2. 兩方面的要素:兩方面的要素: 屬性(屬性(atrributeatrribute)-數(shù)據(jù)數(shù)據(jù) 行為行為(behavior)(behavior) - -數(shù)據(jù)的操作數(shù)據(jù)的操作 (函數(shù))(函數(shù))2022-3-6.71.2.2 1.2.2 對象對象一、什么是對象一、什么是對象 對象是類的一個實體,又稱為實例對象是類的一個實體,又稱為實例 二、對象與類的關(guān)系二、對象與類的關(guān)系三、對象與對象之間消息傳遞三、對象與對象之間消息傳遞 對象對象1對象對象2對象對象3對象對象4消息消息消息消息人類人類姓名姓名年齡年齡 身高身高體重體重走路走路學(xué)習(xí)學(xué)習(xí)說話說話開

6、車開車數(shù)據(jù)抽象數(shù)據(jù)抽象小小王王小小李李小小張張人類人類的對象的對象2022-3-6.81.2.3 1.2.3 封裝與數(shù)據(jù)隱藏封裝與數(shù)據(jù)隱藏 一、什么是封裝一、什么是封裝n封裝是指將對象的數(shù)據(jù)和與這個數(shù)據(jù)有關(guān)的操封裝是指將對象的數(shù)據(jù)和與這個數(shù)據(jù)有關(guān)的操作放在一起。作放在一起。n各個對象之間相互獨立,互不干擾。各個對象之間相互獨立,互不干擾。n對象只留少量的接口,以便與外部聯(lián)系。從外對象只留少量的接口,以便與外部聯(lián)系。從外部看對象就像一個部看對象就像一個“黑匣子黑匣子”,數(shù)據(jù)和方法是,數(shù)據(jù)和方法是隱蔽的、看不見的。隱蔽的、看不見的。n當(dāng)用戶使用對象時,不必知道對象的具體實現(xiàn)當(dāng)用戶使用對象時,不必知

7、道對象的具體實現(xiàn)細節(jié),只需要根據(jù)對象提供的外部接口訪問對細節(jié),只需要根據(jù)對象提供的外部接口訪問對象即可。象即可。二、封裝應(yīng)具有以下幾個特點二、封裝應(yīng)具有以下幾個特點n具有一個清楚的邊界,私有成員封裝在內(nèi)部,具有一個清楚的邊界,私有成員封裝在內(nèi)部,外部不可以訪問外部不可以訪問n提供必要的接口提供必要的接口n對象內(nèi)部的數(shù)據(jù)和方法是受封裝外殼保護的,對象內(nèi)部的數(shù)據(jù)和方法是受封裝外殼保護的,其它對象不能直接使用。其它對象不能直接使用。主機主機主板主板顯卡顯卡聲卡聲卡內(nèi)存內(nèi)存數(shù)據(jù)傳輸線數(shù)據(jù)傳輸線電源線電源線USB接口接口串行接口串行接口電源開關(guān)電源開關(guān) 內(nèi)內(nèi)部部私私有有成成員員與與外外部部接接口口202

8、2-3-6.91.2.4 1.2.4 繼承繼承 一、繼承概念的提出一、繼承概念的提出例如:已定義電視機類,現(xiàn)需要定義彩色電視機類例如:已定義電視機類,現(xiàn)需要定義彩色電視機類解決方法:解決方法: 1. 1.重新設(shè)計重新設(shè)計 2. 2.繼承:繼承原來電視機的屬性和方法,再添加彩色電視機自己特繼承:繼承原來電視機的屬性和方法,再添加彩色電視機自己特有的新的屬性和行為有的新的屬性和行為 二、繼承的概念二、繼承的概念 C+ C+提供的繼承機制提供了類之間相互關(guān)系的解決方案,使某個類可提供的繼承機制提供了類之間相互關(guān)系的解決方案,使某個類可以繼承另外一個類的特征和能力。以繼承另外一個類的特征和能力。 使用

9、繼承符合人們對事物的認(rèn)識和敘述,大大簡化了對問題的描述,使用繼承符合人們對事物的認(rèn)識和敘述,大大簡化了對問題的描述,提高了程序的可重用性,從而提高了程序設(shè)計、修改、擴充的效率,實提高了程序的可重用性,從而提高了程序設(shè)計、修改、擴充的效率,實現(xiàn)現(xiàn)軟件重用軟件重用(software reusabilitysoftware reusability)。)。2022-3-6.101.2.5 多態(tài)性(多態(tài)性(polymorphism) 一、多態(tài)性的概念一、多態(tài)性的概念 多態(tài)性:多態(tài)性:描述的是同一個消息可以根據(jù)發(fā)送消息對象的不同采用不同的描述的是同一個消息可以根據(jù)發(fā)送消息對象的不同采用不同的行為方式。行為

10、方式。 例如:例如: 學(xué)校的上課鈴響,不同班級的學(xué)生進入不同的教室學(xué)習(xí),不同的老學(xué)校的上課鈴響,不同班級的學(xué)生進入不同的教室學(xué)習(xí),不同的老師進入不同教室開始講課,不同的對象會作出不同的響應(yīng)??梢钥吹綄W(xué)師進入不同教室開始講課,不同的對象會作出不同的響應(yīng)。可以看到學(xué)生和教師在接受到同一消息(上課鈴聲)時,執(zhí)行不同的操作,這就是生和教師在接受到同一消息(上課鈴聲)時,執(zhí)行不同的操作,這就是多態(tài)的表現(xiàn)。多態(tài)的表現(xiàn)。二、二、C+C+支持多態(tài)支持多態(tài) 靜態(tài)多態(tài)性靜態(tài)多態(tài)性 動態(tài)多態(tài)性動態(tài)多態(tài)性 2022-3-6.111.2.6 1.2.6 消息消息 面向?qū)ο蠹夹g(shù)的封裝使得對象相互獨立,各個對象要相互協(xié)作面

11、向?qū)ο蠹夹g(shù)的封裝使得對象相互獨立,各個對象要相互協(xié)作實現(xiàn)系統(tǒng)的功能則需要對象之間的消息傳遞機制。消息是一個對象實現(xiàn)系統(tǒng)的功能則需要對象之間的消息傳遞機制。消息是一個對象向另一個對象發(fā)出的服務(wù)請求,進行對象之間的通信。也可以說是向另一個對象發(fā)出的服務(wù)請求,進行對象之間的通信。也可以說是一 個 對 象 調(diào) 用 另 一 個 對 象 的 方 法 (一 個 對 象 調(diào) 用 另 一 個 對 象 的 方 法 ( M e t h o dM e t h o d ) 或 稱 為 函 數(shù)) 或 稱 為 函 數(shù)(FunctionFunction)。)。2022-3-6.12面向過程與面向?qū)ο蟪绦蛟O(shè)計方法的比較一、面向

12、過程程序設(shè)計方法一、面向過程程序設(shè)計方法 程序程序 = = 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)+ +算法算法二、面向?qū)ο蟪绦蛟O(shè)計方法的規(guī)律是:二、面向?qū)ο蟪绦蛟O(shè)計方法的規(guī)律是: 對象對象 = = (數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)+ + 算法)算法) 程序程序 = = 對象對象 + + 對象對象 + + 對象對象 + + + + 對象對象2022-3-6.131.3 類和對象的定義類和對象的定義 一、類定義組成一、類定義組成 數(shù)據(jù)成員:數(shù)據(jù)成員:說明類的屬性說明類的屬性 成員函數(shù)(又稱函數(shù)成員):成員函數(shù)(又稱函數(shù)成員):對類數(shù)據(jù)成員操作的類內(nèi)函數(shù),又稱為對類數(shù)據(jù)成員操作的類內(nèi)函數(shù),又稱為方法。方法。二、類定義的一般格式為二

13、、類定義的一般格式為 class class 類名類名 public : public : 數(shù)據(jù)成員和成員函數(shù)實現(xiàn)數(shù)據(jù)成員和成員函數(shù)實現(xiàn) protected:protected: 數(shù)據(jù)成員和成員函數(shù)實現(xiàn)數(shù)據(jù)成員和成員函數(shù)實現(xiàn) private:private: 數(shù)據(jù)成員和成員函數(shù)實現(xiàn)數(shù)據(jù)成員和成員函數(shù)實現(xiàn) ;2022-3-6.141.3.1 類的定義類的定義說明:說明:(1 1)定義一個類時,使用關(guān)鍵字)定義一個類時,使用關(guān)鍵字classclass;類名必須是一個合法的變;類名必須是一個合法的變量名,量名,C+C+中習(xí)慣用中習(xí)慣用C C或或T T開頭,例如開頭,例如CStudentCStuden

14、t;(2 2)一個類包括類頭和類體兩部分。)一個類包括類頭和類體兩部分。class class ,稱為類頭(,稱為類頭(class headclass head););(3 3)大括號中定義的是類的數(shù)據(jù)成員和成員函數(shù),稱為類體()大括號中定義的是類的數(shù)據(jù)成員和成員函數(shù),稱為類體(class bodyclass body)。類定義結(jié)束要用)。類定義結(jié)束要用“;”結(jié)束;結(jié)束;(4 4)關(guān)鍵字)關(guān)鍵字publicpublic(公有)、(公有)、 protectedprotected(保護)(保護) 和和privateprivate(私(私有)稱為成員訪問限定符(有)稱為成員訪問限定符(mumber

15、access specifiermumber access specifier)。用訪)。用訪問限定符聲明了各個數(shù)據(jù)成員和成員函數(shù)的訪問權(quán)限。問限定符聲明了各個數(shù)據(jù)成員和成員函數(shù)的訪問權(quán)限。2022-3-6.151.3.1 類的定義類的定義三、訪問限定符三、訪問限定符 n公有(公有(publicpublic):):提供了與外界的接口功能。公有成員可以被本類中的提供了與外界的接口功能。公有成員可以被本類中的成員使用和訪問,還可以被類作用域內(nèi)的其他外在其他函數(shù)使用。成員使用和訪問,還可以被類作用域內(nèi)的其他外在其他函數(shù)使用。n私有(私有(privateprivate):):封裝在類內(nèi)部的,只能被該類

16、的成員和該類友元函數(shù)封裝在類內(nèi)部的,只能被該類的成員和該類友元函數(shù)或友元類訪問,任何類以外的函數(shù)對私有成員的訪問都是非法的?;蛴言愒L問,任何類以外的函數(shù)對私有成員的訪問都是非法的。n保護(保護(protectedprotected:訪問權(quán)限介于私有和公有中間,類的成員可以訪問,:訪問權(quán)限介于私有和公有中間,類的成員可以訪問,類以外的其他函數(shù)不能訪問保護成員。類以外的其他函數(shù)不能訪問保護成員。 不同訪問權(quán)限關(guān)系圖不同訪問權(quán)限關(guān)系圖 類類Aclass外部外部私有成員私有成員private保護成員保護成員protected公有成員公有成員public繼承類繼承類友元友元class外部外部2022-

17、3-6.161.3.1 類的定義類的定義例:定義一個日期類例:定義一個日期類CdateCdateCdate-year : int-month :int-day : int+Setdate (y : int, m : int, d : int) : void+Isleapyear() : int+Print() : void 2022-3-6.17#include class Cdate /使用關(guān)鍵字使用關(guān)鍵字class聲明一個類,類名為聲明一個類,類名為Cdate public: /以下是公有成員函數(shù)以下是公有成員函數(shù) void Setdate (int y, int m,int d)/設(shè)置日

18、期設(shè)置日期 year=y; month=m; day=d;/以上以上3行是函數(shù)的實現(xiàn)行是函數(shù)的實現(xiàn)int Isleapyear()/判斷日期是不是閏年判斷日期是不是閏年 return (year%4=0&year%100!=0)|(year%400=0); void Print() /定義一個公有成員函數(shù)定義一個公有成員函數(shù)Print()輸出日期輸出日期 coutyear- month -dayendl;private:/以下是私有成員以下是私有成員 int year,month ,day;/定義定義3個整型變量,分別表示日期的年月日個整型變量,分別表示日期的年月日;2022-3-6.

19、181.3.2 成員函數(shù)的定義成員函數(shù)的定義n類的成員函數(shù)也是函數(shù)的一種,它的與以前介紹的普通函數(shù)用類的成員函數(shù)也是函數(shù)的一種,它的與以前介紹的普通函數(shù)用法基本一樣。法基本一樣。n成員函數(shù)由函數(shù)頭和函數(shù)體組成,函數(shù)頭包括函數(shù)名、函數(shù)的成員函數(shù)由函數(shù)頭和函數(shù)體組成,函數(shù)頭包括函數(shù)名、函數(shù)的參數(shù)及函數(shù)的類型。函數(shù)體主要參數(shù)及函數(shù)的類型。函數(shù)體主要說明說明函數(shù)實現(xiàn)的功能。函數(shù)實現(xiàn)的功能。n成員函數(shù)與一般函數(shù)的區(qū)別在于:成員函數(shù)與一般函數(shù)的區(qū)別在于:它屬于類的成員,出現(xiàn)在類它屬于類的成員,出現(xiàn)在類體中,是類的一部分。使用類的成員函數(shù)時,要考慮類成員函體中,是類的一部分。使用類的成員函數(shù)時,要考慮類成員

20、函數(shù)的訪問權(quán)限。數(shù)的訪問權(quán)限。n類的成員函數(shù)可以在類體中定義,也可以在類體中聲明類成員類的成員函數(shù)可以在類體中定義,也可以在類體中聲明類成員函數(shù),成員函數(shù)的實現(xiàn)在類外定義。函數(shù),成員函數(shù)的實現(xiàn)在類外定義。.2022-3-6191 在類內(nèi)定義成員函數(shù)在類內(nèi)定義成員函數(shù)#include class Cdate public: void Setdate (int y, int m,int d) /在類內(nèi)定義成員函數(shù)在類內(nèi)定義成員函數(shù) year=y; month=m; day=d; int Isleapyear()return (year%4=0&year%100!=0)|(year%400=

21、0); void Print()coutyear- month -dayendl;private: int year,month ,day; date1,date2,date3; ;說明:說明:在類內(nèi)定義的成員函數(shù)默認(rèn)的是內(nèi)聯(lián)函數(shù)(在類內(nèi)定義的成員函數(shù)默認(rèn)的是內(nèi)聯(lián)函數(shù)(inlineinline函數(shù))。一般把規(guī)模比較小的成員函數(shù)函數(shù))。一般把規(guī)模比較小的成員函數(shù)在類內(nèi)定義。在類內(nèi)定義。.2022-3-6202 在類外定義成員函數(shù)在類外定義成員函數(shù) 通常情況下通常情況下 C+C+程序員習(xí)慣在類體中只定義數(shù)據(jù)成程序員習(xí)慣在類體中只定義數(shù)據(jù)成員以及成員函數(shù)的聲明,而將成員函數(shù)的實現(xiàn)寫在類外。因員以及成

22、員函數(shù)的聲明,而將成員函數(shù)的實現(xiàn)寫在類外。因此類的定義由兩部分組成:此類的定義由兩部分組成:n聲明部分聲明部分 聲明類的數(shù)據(jù)成員類型和成員函數(shù)的參數(shù)類型、個數(shù)以聲明類的數(shù)據(jù)成員類型和成員函數(shù)的參數(shù)類型、個數(shù)以及返回值類型。及返回值類型。n實現(xiàn)部分實現(xiàn)部分 對說明類成員函數(shù)的具體實現(xiàn)對說明類成員函數(shù)的具體實現(xiàn).2022-3-6212 在類外定義成員函數(shù)在類外定義成員函數(shù)一、定義的格式一、定義的格式 /類聲明部分類聲明部分class class 類名類名 public: private: Protected:public: private: Protected: 數(shù)據(jù)成員類型數(shù)據(jù)成員類型 數(shù)據(jù)成員

23、名;數(shù)據(jù)成員名; 數(shù)據(jù)成員類型數(shù)據(jù)成員類型 數(shù)據(jù)成員名;數(shù)據(jù)成員名; 函數(shù)類型函數(shù)類型 成員函數(shù)名(參數(shù)表)成員函數(shù)名(參數(shù)表); ; 函數(shù)類型函數(shù)類型 成員函數(shù)名(參數(shù)表)成員函數(shù)名(參數(shù)表); ; ;/類實現(xiàn)部分類實現(xiàn)部分函數(shù)類型函數(shù)類型 類名類名 :成員函數(shù)名(參數(shù)表):成員函數(shù)名(參數(shù)表) / /實現(xiàn)實現(xiàn) .2022-3-6222 在類外定義成員函數(shù)在類外定義成員函數(shù)說明:說明:(1 1)在類聲明部分,包括)在類聲明部分,包括數(shù)據(jù)成員的定義和成員函數(shù)的聲明數(shù)據(jù)成員的定義和成員函數(shù)的聲明。(2 2)成員函數(shù)的聲明主要說明函數(shù)的類型,函數(shù)的參數(shù)個數(shù))成員函數(shù)的聲明主要說明函數(shù)的類型,函數(shù)的

24、參數(shù)個數(shù)及類型,并用及類型,并用“;”結(jié)束。結(jié)束。(3 3)函數(shù)實現(xiàn)部分是對在類中定義的成員函數(shù)完成功能的實)函數(shù)實現(xiàn)部分是對在類中定義的成員函數(shù)完成功能的實現(xiàn),包括函數(shù)頭和函數(shù)體。在類體中直接定義函數(shù)時,不需要現(xiàn),包括函數(shù)頭和函數(shù)體。在類體中直接定義函數(shù)時,不需要在函數(shù)名前面加上類名,因為函數(shù)屬于哪一個類是不言而喻的。在函數(shù)名前面加上類名,因為函數(shù)屬于哪一個類是不言而喻的。但成員函數(shù)在類外定義時,必須在函數(shù)名前面加上類名,給與但成員函數(shù)在類外定義時,必須在函數(shù)名前面加上類名,給與限定限定(qualifed)(qualifed),“”是是作用域限定符作用域限定符(field qualifier

25、)(field qualifier)或稱作用域運算符,用它聲明函數(shù)是屬于哪個類的。如果在作或稱作用域運算符,用它聲明函數(shù)是屬于哪個類的。如果在作用域運算符用域運算符“”的前面沒有類名,或者函數(shù)名前面既無類名的前面沒有類名,或者函數(shù)名前面既無類名又無作用域運算符又無作用域運算符“”,則表示,則表示displaydisplay函數(shù)不屬于任何類,函數(shù)不屬于任何類,該函數(shù)不是成員函數(shù),而是全局函數(shù),即非成員函數(shù)的一般普該函數(shù)不是成員函數(shù),而是全局函數(shù),即非成員函數(shù)的一般普通函數(shù)。通函數(shù)。.2022-3-6232 在類外定義成員函數(shù)在類外定義成員函數(shù)例:例:CdateCdate類定義類定義/ Cdate

26、類聲明部分類聲明部分class Cdate public: /函數(shù)聲明函數(shù)聲明 void Setdate (int y, int m,int d); /或或void Setdate (int, int,int); int Isleapyear(); void Print();private: int year,month ,day;date1,date2,date3; / Cdate類成員函數(shù)的實現(xiàn)類成員函數(shù)的實現(xiàn)void Cdate: Setdate (int y, int m,int d) year=y; month=m; day=d; int Cdate:Isleapyear() ret

27、urn (year%4=0&year%100!=0)|(year%400=0);void Cdate:Print() coutyear- month -dayendl;2022-3-6.241.3.3 類對象的定義類對象的定義 1 1先聲明類類型,然后定義類對象先聲明類類型,然后定義類對象class class 類名類名 數(shù)據(jù)成員和成員函數(shù)實現(xiàn)數(shù)據(jù)成員和成員函數(shù)實現(xiàn); class class 類名類名 對象列表對象列表說明:說明:(1 1)class class 可選,可以寫,也可以省略可選,可以寫,也可以省略(2 2)類名是定義好的類。)類名是定義好的類。(3 3)對象列表的格式為:

28、對象名)對象列表的格式為:對象名 ,對象名,對象名,對象名,對象名 。定義多個對象。定義多個對象時,各對象名中間用逗號隔開。時,各對象名中間用逗號隔開。如:如: class Cdate date1,date2,date3; /Cdateclass Cdate date1,date2,date3; /Cdate是已經(jīng)聲明的類類型是已經(jīng)聲明的類類型 Cdate date1,date2,date3; /Cdate date1,date2,date3; /建議使用的方法。建議使用的方法。2022-3-6.252 2在聲明類類型的同時定義對象在聲明類類型的同時定義對象class class 類名類名 數(shù)

29、據(jù)成員和成員函數(shù)實現(xiàn)數(shù)據(jù)成員和成員函數(shù)實現(xiàn) 對象列表對象列表;例:例:#include class Cdate /使用關(guān)鍵字使用關(guān)鍵字class聲明一個類,類名為聲明一個類,類名為Cdate public: /以下是公有成員函數(shù)以下是公有成員函數(shù) void Setdate (int y, int m,int d)/設(shè)置日期設(shè)置日期 year=y; month=m; day=d; /以上以上3行是函數(shù)的實現(xiàn)行是函數(shù)的實現(xiàn) int Isleapyear()/判斷日期是不是閏年判斷日期是不是閏年 return (year%4=0&year%100!=0)|(year%400=0); void

30、 Print() /定義一個公有成員函數(shù)定義一個公有成員函數(shù)Print()輸出日期輸出日期 coutyear- month -day - 數(shù)據(jù)成員名數(shù)據(jù)成員名 / / “-”是指向運算符是指向運算符 對象指針名對象指針名 - - 成員函數(shù)名成員函數(shù)名 例如:例如: Cdate d,Cdate d,* *p; /p; /定義對象定義對象d d和對象指針變量和對象指針變量p p p=&d; / p=&d; /初始化對象指針初始化對象指針p p p- Print();/ p- Print();/通過指向?qū)ο蟮闹羔樅椭赶蜻\算符訪問對象中的成員通過指向?qū)ο蟮闹羔樅椭赶蜻\算符訪問對象中的成

31、員.2022-3-6281.3.4 對象成員的訪問對象成員的訪問(3 3)通過對象的引用變量訪問對象中的成員)通過對象的引用變量訪問對象中的成員 如果為一個對象定義了一個引用變量,它們是共占同一如果為一個對象定義了一個引用變量,它們是共占同一段存儲單元的,實際上它們是同一個對象,只是用不同的名字表段存儲單元的,實際上它們是同一個對象,只是用不同的名字表示而已。因此完全可以通過引用變量來訪問該對象中的成員。通示而已。因此完全可以通過引用變量來訪問該對象中的成員。通過對象的引用變量訪問該對象中的成員的格式與通過對象名訪問過對象的引用變量訪問該對象中的成員的格式與通過對象名訪問對象中的成員的形式一樣

32、。對象中的成員的形式一樣。 例如:例如: Cdate d1; /Cdate d1; /定義對象定義對象d1d1 Cdate & d2=d1; / Cdate & d2=d1; /定義引用變量定義引用變量d2d2,并初始化之為,并初始化之為d1d1 d2. Print(); / d2. Print(); /引用變量訪問對象中的成員,輸出日期引用變量訪問對象中的成員,輸出日期.2022-3-629/ Cdate.h 在頭文件中聲明日期類在頭文件中聲明日期類class Cdate public: void Setdate (int y, int m,int d); int Islea

33、pyear(); void Print();private: int year,month ,day; /Cdate.cpp 在與類定義頭文件同名的在與類定義頭文件同名的cpp文件中定義成員函文件中定義成員函數(shù)實現(xiàn)部分?jǐn)?shù)實現(xiàn)部分#include #include Cdate.h /包含類定義的頭文件,否則出錯包含類定義的頭文件,否則出錯void Cdate: Setdate (int y, int m,int d) year=y; month=m; day=d; int Cdate:Isleapyear() return (year%4=0&year%100!=0)|(year%400

34、=0);void Cdate:Print() coutyear- month -day Setdate(2000,4,2); /通過指針訪問成員通過指針訪問成員 d4. Setdate(2006,12,1); /通過引用訪問成員通過引用訪問成員 d1.Print(); p- Print(); d4.Print();【例例1.11.1】一個完整的一個完整的CdateCdate類的應(yīng)用程序。類的應(yīng)用程序。程序運行結(jié)果:程序運行結(jié)果:1999-12-302000-4-22006-12-1.2022-3-630d1.Setdate(1999,12,30) &d2yearmonth dayyea

35、r = 1999month =12day = 13yearmonth dayd1d2d4d3pp- Setdate(2000,4,2)yearmonth dayyear = 2000month =4day = 2year = 2006month =12day = 1d4.Setdate(2006,12,1). Setdate(2006,12,1);d1.Print()d4.Print()p- Print()屏幕輸出結(jié)果:1999-12-302000-4-22006-12-1定義變量并為定義變量并為變量分配空間變量分配空間調(diào)用類成員函數(shù)調(diào)用類成員函數(shù)Setdate()初始()初始化類的數(shù)據(jù)成員化

36、類的數(shù)據(jù)成員調(diào)用類成員函數(shù)調(diào)用類成員函數(shù)Print()輸出()輸出日期日期 例例1.11.1程序執(zhí)行過程程序執(zhí)行過程 .2022-3-631【例例1.21.2】封裝一個學(xué)生類,學(xué)生的信息包括學(xué)生的姓名、學(xué)號、性別、年齡和封裝一個學(xué)生類,學(xué)生的信息包括學(xué)生的姓名、學(xué)號、性別、年齡和3 3門的成績??梢栽O(shè)置學(xué)生的各類信息,統(tǒng)計該學(xué)生的平均成績并輸出學(xué)生信息。門的成績。可以設(shè)置學(xué)生的各類信息,統(tǒng)計該學(xué)生的平均成績并輸出學(xué)生信息。 CStudent-name20 : char-id : int -sex : char-age : int-grad3 : float+setinfo(na : char

37、*,i : int ,s : char, a : int) : void+void setgrad(a : float , b : float , c : float) : void+avg() : float+display() : voidCstudentCstudent的類圖的類圖 .2022-3-632/CStudent.h 這是頭文件,在此文件中進行類的這是頭文件,在此文件中進行類的聲明聲明class CStudent /類聲明類聲明 public:void setinfo(char *,int ,char,int);void setgrad(float , float , floa

38、t);float avg();void display(); private:char name20;int id ;char sex;int age;float grad3; ;/CStudent.cpp在此文件中進行函數(shù)的定義在此文件中進行函數(shù)的定義#include #include #include CStudent.h/漏寫此行編譯通不過漏寫此行編譯通不過void CStudent:setinfo(char *na,int i ,char s ,int a) strcpy(name,na);id=i;sex=s;age=a;void CStudent:setgrad(float a,

39、float b, float c)grad0=a;grad1=b;grad2=c;float CStudent:avg()return (grad0+ grad1 +grad2)/3;void CStudent:display( ) coutid:idendl; coutname:nameendl; coutsex:sexendl; coutage:ageendl; /main.cpp 主函數(shù)模塊主函數(shù)模塊#include #include CStudent.h/將類聲明頭文件包含進來將類聲明頭文件包含進來int main( )CStudent stud1;/定義對象定義對象stud1. se

40、tinfo(張三張三,2006102,m,18);stud1.setgrad(79,98,87);stud1.display();cout 平均成績:平均成績:stud1.avg();return 0;運行結(jié)果:運行結(jié)果:id:name:張三:張三sex:mage:18平均成績:平均成績:882022-3-6.331.3.5 類對象的內(nèi)存分配類對象的內(nèi)存分配 C+ C+中用同一內(nèi)存空間來存放這個同種類對象的成員函中用同一內(nèi)存空間來存放這個同種類對象的成員函數(shù)代碼,當(dāng)去調(diào)用某個對象的成員函數(shù)時,都去調(diào)用這個公用數(shù)代碼,當(dāng)去調(diào)用某個對象的成員函數(shù)時,都去調(diào)用這個公用的函數(shù)代碼。的函數(shù)代碼。C+C+

41、中用中用thisthis指針指針來區(qū)分是哪個對象的成員函數(shù)。來區(qū)分是哪個對象的成員函數(shù)。 數(shù)據(jù)成員數(shù)據(jù)成員對象對象1數(shù)據(jù)成員數(shù)據(jù)成員對象對象2數(shù)據(jù)成員數(shù)據(jù)成員對象對象n公用成員函數(shù)代碼公用成員函數(shù)代碼.2022-3-6341.3.6 this指針 一、問題的提出一、問題的提出 每個對象中的數(shù)據(jù)成員都分別占有存儲空間,而成員函數(shù)都是同每個對象中的數(shù)據(jù)成員都分別占有存儲空間,而成員函數(shù)都是同一代碼段。如果對同一個類定義了一代碼段。如果對同一個類定義了n n個對象,那么,當(dāng)不同對象的成員函個對象,那么,當(dāng)不同對象的成員函數(shù)引用數(shù)據(jù)成員時,怎么能保證引用的數(shù)據(jù)成員是屬于哪個對象呢?數(shù)引用數(shù)據(jù)成員時,怎

42、么能保證引用的數(shù)據(jù)成員是屬于哪個對象呢? 二、二、thisthis指針指針nC+C+除了接受原有的參數(shù)外,還隱含的接受了一個特殊的指針參數(shù),這個除了接受原有的參數(shù)外,還隱含的接受了一個特殊的指針參數(shù),這個指針稱為指針稱為thisthis指針指針。n它是指向本類對象的指針,它的值是當(dāng)前被調(diào)用的成員函數(shù)所在的對象的它是指向本類對象的指針,它的值是當(dāng)前被調(diào)用的成員函數(shù)所在的對象的起始地址,既起始地址,既thisthis指針指向當(dāng)前對象。指針指向當(dāng)前對象。.2022-3-635【例例1.13】設(shè)計矩形類設(shè)計矩形類CRect,說明,說明this指針的用法。指針的用法。分析:矩形類數(shù)據(jù)成員包括左上角坐標(biāo)(

43、分析:矩形類數(shù)據(jù)成員包括左上角坐標(biāo)(left和和top)和矩形的長()和矩形的長(length)和)和寬(寬(width),定義成員函數(shù)),定義成員函數(shù)set()設(shè)置矩形,成員函數(shù)設(shè)置矩形,成員函數(shù)area()計算矩形的面積。計算矩形的面積。#include class CRectpublic: CRect( ); void set( double t, double, double len, double wid); double area();private: double left; double top; double length; double width; CRect:CRect

44、() top = 0; /相當(dāng)與相當(dāng)與this-top=0 left = 0; length = 0; width = 0; .2022-3-636void CRect:set(double t, double lef, double len, double wid )top = t; left = lef;length = len;width = wid; double CRect:area()return length* width; void main()CRect r1,r2; r1.set ( 10,10,10,10); r2.set ( 200,200,15,25); cout第一

45、矩形的面積是第一矩形的面積是:r1.area()endl;cout第二矩形的面積是第二矩形的面積是:r2.area()top=t; left = lef;/等價與等價與this- left = lef; length = len;/等價與等價與this- length = len; width = wid;/等價與等價與this- width = wid; 2022-3-6.371.5 類和類和對象的進一步引用對象的進一步引用 在程序中經(jīng)常需要訪問對象中的成員,訪問對象中在程序中經(jīng)常需要訪問對象中的成員,訪問對象中的成員可以有的成員可以有3 3種方法:種方法:n 通過通過對象名和成員運算符對象

46、名和成員運算符訪問對象中的成員;訪問對象中的成員;n 通過通過指向?qū)ο蟮闹羔樅椭羔樳\算符指向?qū)ο蟮闹羔樅椭羔樳\算符訪問對象中的成員;訪問對象中的成員;n 通過通過對象的引用變量對象的引用變量訪問對象中的成員。訪問對象中的成員。2022-3-6.381.4 構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)的作用構(gòu)造函數(shù)和析構(gòu)函數(shù)的作用1. 1. 構(gòu)造(構(gòu)造(constructorconstructor)函數(shù))函數(shù) 在創(chuàng)建對象時,系統(tǒng)自動調(diào)用它來初始化數(shù)據(jù)成員;在創(chuàng)建對象時,系統(tǒng)自動調(diào)用它來初始化數(shù)據(jù)成員;2. 2. 析構(gòu)(析構(gòu)(destructordestructor)函數(shù))函數(shù) 在對象生

47、存期結(jié)束的時候,自動調(diào)用來釋放該對象。在對象生存期結(jié)束的時候,自動調(diào)用來釋放該對象。2022-3-6.391.4.1 構(gòu)造函數(shù)的定義一、構(gòu)造函數(shù)的定義格式:一、構(gòu)造函數(shù)的定義格式:class class 類名類名 publicpublic: 構(gòu)造函數(shù)函數(shù)名(參數(shù)表);構(gòu)造函數(shù)函數(shù)名(參數(shù)表); ;2022-3-6.401.4.1 構(gòu)造函數(shù)的定義二、構(gòu)造函數(shù)的特點二、構(gòu)造函數(shù)的特點(1 1)構(gòu)造函數(shù)是類的一個特殊的成員函數(shù),構(gòu)造函數(shù)是類的一個特殊的成員函數(shù),函數(shù)名與類名相同函數(shù)名與類名相同;(2 2)構(gòu)造函數(shù)的訪問屬性應(yīng)該是)構(gòu)造函數(shù)的訪問屬性應(yīng)該是公有(公有(publicpublic)訪問屬性

48、;訪問屬性;(3 3)構(gòu)造函數(shù)的功能是對對象進行初始化,因此在構(gòu)造函數(shù)中)構(gòu)造函數(shù)的功能是對對象進行初始化,因此在構(gòu)造函數(shù)中只能對數(shù)據(jù)只能對數(shù)據(jù)成員做初始化成員做初始化,這些數(shù)據(jù)成員一般為私有成員,在構(gòu)造函數(shù)中一般不做,這些數(shù)據(jù)成員一般為私有成員,在構(gòu)造函數(shù)中一般不做初始化以外的事情;初始化以外的事情;(4 4)構(gòu)造函數(shù)可以在類內(nèi)定義也可以在類外定義;)構(gòu)造函數(shù)可以在類內(nèi)定義也可以在類外定義;(5 5)構(gòu)造函數(shù))構(gòu)造函數(shù)無函數(shù)返回類型無函數(shù)返回類型。注意:是什么也不寫,也不可寫。注意:是什么也不寫,也不可寫voidvoid;(6 6)在程序運行時,當(dāng)新的對象被建立,該對象所屬的類的構(gòu)造函數(shù)自動

49、)在程序運行時,當(dāng)新的對象被建立,該對象所屬的類的構(gòu)造函數(shù)自動被調(diào)用,在該對象生存期中也被調(diào)用,在該對象生存期中也只調(diào)用這一次只調(diào)用這一次。(7 7)構(gòu)造函數(shù)可以重載構(gòu)造函數(shù)可以重載。類中可以有多個構(gòu)造函數(shù),它們由不同的參數(shù)表。類中可以有多個構(gòu)造函數(shù),它們由不同的參數(shù)表區(qū)分,系統(tǒng)在自動調(diào)用時按一般函數(shù)重載的規(guī)則選一個執(zhí)行。區(qū)分,系統(tǒng)在自動調(diào)用時按一般函數(shù)重載的規(guī)則選一個執(zhí)行。2022-3-6.41【例例1.31.3】定義定義CdateCdate一個不帶參數(shù)的構(gòu)造函數(shù)。一個不帶參數(shù)的構(gòu)造函數(shù)。#include class Cdate /定義定義一個一個日期類日期類 public:/公有數(shù)據(jù)成員公

50、有數(shù)據(jù)成員 Cdate() /定義構(gòu)造函數(shù)定義構(gòu)造函數(shù) year=2000;/初始化數(shù)據(jù)成員初始化數(shù)據(jù)成員 month=1; day=1; void Print()/一般成員函數(shù)一般成員函數(shù) coutyear- month -dayendl; private: int year,month ,day; int main() Cdate d1; /自動調(diào)用構(gòu)造函數(shù),初始化數(shù)據(jù)成員自動調(diào)用構(gòu)造函數(shù),初始化數(shù)據(jù)成員 d1.Print(); return 0;程序運行結(jié)果為:程序運行結(jié)果為:2000-1-1 2022-3-6.42【例例1.41.4】CdateCdate類帶參數(shù)的構(gòu)造函數(shù)類帶參數(shù)的構(gòu)造

51、函數(shù) #include class Cdatepublic: Cdate(int y, int m,int d); void Print();private: int year,month ,day;Cdate:Cdate(int y, int m,int d) year=y; month=m; day=d;void Cdate:Print() coutyear- month -dayendl;int main() Cdate d1(1999,12,30),d2(2001,4,1); d1.Print(); d2.Print(); return 0;程序運行結(jié)果:1999-12-302001-

52、4-12022-3-6.43三、使用初始化表來實現(xiàn)對數(shù)據(jù)成員的初始化三、使用初始化表來實現(xiàn)對數(shù)據(jù)成員的初始化初始化表的一般格式:初始化表的一般格式:類名類名:構(gòu)造函數(shù)名構(gòu)造函數(shù)名( (參數(shù)列表參數(shù)列表):):初始化表初始化表 構(gòu)造函數(shù)其他實現(xiàn)代碼構(gòu)造函數(shù)其他實現(xiàn)代碼 初始化表的格式:初始化表的格式: 對象成員對象成員1(1(參數(shù)名或常量參數(shù)名或常量) ),對象成員,對象成員2(2(參數(shù)名或常量參數(shù)名或常量) ),對象成對象成員員n(n(參數(shù)名或常量參數(shù)名或常量) )例如例例如例1.41.4定義的構(gòu)造函數(shù)可以改用以下形式:定義的構(gòu)造函數(shù)可以改用以下形式:Cdate: Cdate(int y, i

53、nt m,int d): year(y), month(m),day(d) Cdate: Cdate(int y, int m,int d): year(y), month(m),day(d) 注意:注意:這種寫法方便、簡潔。許多這種寫法方便、簡潔。許多C+C+程序員喜歡用這種方式初始化所有的數(shù)據(jù)成員。除了構(gòu)造函程序員喜歡用這種方式初始化所有的數(shù)據(jù)成員。除了構(gòu)造函數(shù)可以使用初始化表外,類的其他成員函數(shù)也可以根據(jù)需要使用初始化表。數(shù)可以使用初始化表外,類的其他成員函數(shù)也可以根據(jù)需要使用初始化表。2022-3-6.441.4.2 構(gòu)造函數(shù)的重載構(gòu)造函數(shù)的重載 程序中需要以不同的方式初始化類對象時,

54、可以在一個類中程序中需要以不同的方式初始化類對象時,可以在一個類中定義多個構(gòu)造函數(shù)。即可以重載構(gòu)造函數(shù)。定義多個構(gòu)造函數(shù)。即可以重載構(gòu)造函數(shù)。C+C+定義對象時,根定義對象時,根據(jù)聲明中的據(jù)聲明中的參數(shù)個數(shù)和類型參數(shù)個數(shù)和類型選擇相應(yīng)的構(gòu)造函數(shù)初始化對象選擇相應(yīng)的構(gòu)造函數(shù)初始化對象。2022-3-6.45【例例1.51.5】CdateCdate類中的重載構(gòu)造函數(shù)類中的重載構(gòu)造函數(shù) #include class Cdatepublic: Cdate(); /不帶參數(shù)的構(gòu)造函數(shù),又稱默認(rèn)構(gòu)造函數(shù)不帶參數(shù)的構(gòu)造函數(shù),又稱默認(rèn)構(gòu)造函數(shù) Cdate(int y);/帶帶1個參數(shù)的構(gòu)造函數(shù)個參數(shù)的構(gòu)造函數(shù)

55、 Cdate(int y, int m); /帶帶2個參數(shù)的構(gòu)造函數(shù)個參數(shù)的構(gòu)造函數(shù) Cdate(int y, int m,int d); /帶帶3個參數(shù)的構(gòu)造函數(shù)個參數(shù)的構(gòu)造函數(shù) void Print();private: int year,month ,day;Cdate: Cdate()/構(gòu)造函數(shù)的定義構(gòu)造函數(shù)的定義 year=2000; month=1; day=1;Cdate: Cdate(int y) year=y; month=1; day=1;Cdate: Cdate(int y, int m) year=y; month=m; day=1;Cdate: Cdate(int y

56、, int m,int d) year=y; month=m; day=d;void Cdate:Print() coutyear- month -dayendl;int main() Cdate day1; Cdate day2(2004); Cdate day3(2005,2); Cdate day4(2006,12,16); day1.Print(); day2.Print(); day3.Print(); day4.Print(); return 0;程序運行結(jié)果:2000-1-12004-1-12005-2-12006-12-162022-3-6.461.4.2 構(gòu)造函數(shù)的重載構(gòu)造函

57、數(shù)的重載關(guān)于構(gòu)造函數(shù)關(guān)于構(gòu)造函數(shù)C+C+規(guī)定:規(guī)定:(1 1)每個類)每個類必須有一個構(gòu)造函數(shù)必須有一個構(gòu)造函數(shù),如果沒有就不能創(chuàng)建任何對象;,如果沒有就不能創(chuàng)建任何對象;(2 2)若沒有定義任何一個構(gòu)造函數(shù),)若沒有定義任何一個構(gòu)造函數(shù),C+C+提供一個默認(rèn)的構(gòu)造函數(shù),提供一個默認(rèn)的構(gòu)造函數(shù),該構(gòu)造函數(shù)沒有參數(shù),不做任何工作,相當(dāng)一個空函數(shù),例如:該構(gòu)造函數(shù)沒有參數(shù),不做任何工作,相當(dāng)一個空函數(shù),例如: Cdate:CdateCdate:Cdate()() 所以在講構(gòu)造函數(shù)以前也可以定義一個對象,就所以在講構(gòu)造函數(shù)以前也可以定義一個對象,就是因為系統(tǒng)提供的默認(rèn)構(gòu)造函數(shù)。是因為系統(tǒng)提供的默認(rèn)構(gòu)

58、造函數(shù)。(3 3)只要)只要C+C+提供一個構(gòu)造函數(shù)(不一定是沒有參數(shù)的),提供一個構(gòu)造函數(shù)(不一定是沒有參數(shù)的),C+C+不再不再提供默認(rèn)的構(gòu)造函數(shù)。也就是說為類定義了一個帶參數(shù)的構(gòu)造提供默認(rèn)的構(gòu)造函數(shù)。也就是說為類定義了一個帶參數(shù)的構(gòu)造函數(shù),還想要創(chuàng)建無參的對象時,則需要自己定義一個默認(rèn)構(gòu)函數(shù),還想要創(chuàng)建無參的對象時,則需要自己定義一個默認(rèn)構(gòu)造函數(shù)造函數(shù) 2022-3-6.471.4.3 默認(rèn)參數(shù)的構(gòu)造函數(shù)默認(rèn)參數(shù)的構(gòu)造函數(shù)為什么使用默認(rèn)參數(shù)的構(gòu)造函數(shù):對象常有一些初始值。為什么使用默認(rèn)參數(shù)的構(gòu)造函數(shù):對象常有一些初始值?!纠?.61.6】設(shè)計設(shè)計CPointCPoint類,它帶有默認(rèn)參

59、數(shù)的構(gòu)造函數(shù)。類,它帶有默認(rèn)參數(shù)的構(gòu)造函數(shù)。分析:一個點包括橫坐標(biāo)(分析:一個點包括橫坐標(biāo)(x x)和縱坐標(biāo)()和縱坐標(biāo)(y y)兩個數(shù)據(jù)成員)兩個數(shù)據(jù)成員, , 默認(rèn)初始值為默認(rèn)初始值為(0,00,0)。也可以根據(jù)用戶需要,初始化點為其他坐標(biāo),因此需要定義一個)。也可以根據(jù)用戶需要,初始化點為其他坐標(biāo),因此需要定義一個帶默認(rèn)參數(shù)的構(gòu)造函數(shù)。定義成員函數(shù)帶默認(rèn)參數(shù)的構(gòu)造函數(shù)。定義成員函數(shù)print()print()輸出該點。輸出該點。CPoint-x : double-y : double+CPoint(x1 : double =0,y1 : double =0)+print() : void

60、CPoint類圖類圖 2022-3-6.48#include class CPointpublic: CPoint (double x1=0,double y1=0)/帶默認(rèn)參數(shù)的構(gòu)造函數(shù)帶默認(rèn)參數(shù)的構(gòu)造函數(shù) x=x1; y=y1; void print () cout(x,y)endl;private: double x,y;main() CPoint point1; /自動調(diào)用帶默認(rèn)參數(shù)的構(gòu)造函數(shù),(自動調(diào)用帶默認(rèn)參數(shù)的構(gòu)造函數(shù),(0,0) CPoint point2(10);/自動調(diào)用帶默認(rèn)參數(shù)的構(gòu)造函數(shù),(自動調(diào)用帶默認(rèn)參數(shù)的構(gòu)造函數(shù),(10,0) CPoint point3(20,30);/自動調(diào)用帶默認(rèn)參數(shù)的構(gòu)造函數(shù),(自動調(diào)用帶默認(rèn)參數(shù)的構(gòu)造函數(shù),(

溫馨提示

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

評論

0/150

提交評論