資源描述:
《C++大學基礎教程 教學課件 作者 徐惠民 C++大學基礎教程第八章.ppt》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、C++大學基礎教程第8章類與對象北京郵電大學電信工程學院計算機技術中心類是實現(xiàn)C++面向?qū)ο蟪绦蛟O計的基礎。面向?qū)ο蟪绦蛟O計的基本特點有:抽象、封裝、繼承和多態(tài),類把數(shù)據(jù)和函數(shù)封裝在一起,是C++封裝的基本單元。2021/9/212北京郵電大學電信工程學院計算機技術中心8.1類和對象的定義8.2對象的使用8.3構造函數(shù)8.4析構函數(shù)8.5拷貝構造函數(shù)8.6類的靜態(tài)成員8.7類成員的保護和使用8.8類的組合8.9面向?qū)ο蠓治龊驮O計第8章類與對象8.1類和對象的定義8.1類和對象的定義一個類表示現(xiàn)實生活中的一類事物,比如“學生”,事物有相應的特
2、征或?qū)傩?,它們就是類的?shù)據(jù)成員;事物可能有行為動作,也可能被某些行為動作所操作,這些都用函數(shù)來實現(xiàn),這些函數(shù)和類有著不可分割的關系,是構成類的函數(shù)成員,或者叫成員函數(shù)。在C++中,類實際上相當于一種用戶自定義的數(shù)據(jù)類型。2021/9/215北京郵電大學電信工程學院計算機技術中心對象是一類事物中的一個具體的個體。在定義了類類型后,就可以該類型的變量,這個變量就稱為類的對象(或?qū)嵗K?,從程序設計的角度來看,對象就相當于變量。8.1類和對象的定義2021/9/216北京郵電大學電信工程學院計算機技術中心舉例:classStudent//類的
3、定義{private:intid;char[20]name;intage;floatscore;public:voidgetscore()voidprintstu()};8.1類和對象的定義2021/9/217北京郵電大學電信工程學院計算機技術中心1、使用類對象如果已經(jīng)知道某個類的功能和接口函數(shù),就可以使用它了。先定義類對象,通過對象調(diào)用接口函數(shù)實現(xiàn)一定的功能。classstudentstu01;//class也可以省略不寫stu01.getscore();stu01.printstu();這個過程的本質(zhì)是:根據(jù)對象所需要完成的任務,向?qū)ο?/p>
4、發(fā)送消息。對象收到消息后,調(diào)用接口中的相應的函數(shù),完成它的功能。對象只需要知道“做什么”,具體工作由成員函數(shù)來完成。2021/9/218北京郵電大學電信工程學院計算機技術中心2、類的聲明類的聲明具體說明類的組成,聲明類的語法形式為:class類名稱{public:公有成員protect:保護型成員private:私有成員};2021/9/219北京郵電大學電信工程學院計算機技術中心其中,“成員”既可以是數(shù)據(jù)成員,也可以是成員函數(shù)的原型。數(shù)據(jù)成員的聲明方式與一般變量相同。函數(shù)成員是描述類的對象可以進行的操作,一般在類中聲明原型,在類聲明的外面
5、定義函數(shù)的具體實現(xiàn)。關鍵字public、protect、private說明類成員的訪問控制屬性。私有(private)成員只允許本類的成員函數(shù)來訪問;公有(public)成員是類對外的接口,在類聲明和類(函數(shù))實現(xiàn)之后,類的對象可以訪問公有成員。保護型(protected)成員的可訪問性和私有成員的性質(zhì)相似。2、類的聲明2021/9/2110北京郵電大學電信工程學院計算機技術中心關于訪問控制屬性,注意:在類聲明中,三種訪問控制屬性,可以按任意次序出現(xiàn),也可以不出現(xiàn)。public等關鍵字也可以多次出現(xiàn),但是一個成員只能具有一種訪問控制屬性。如
6、果不寫訪問控制屬性關鍵字,默認的是private。在書寫時通常習慣將公有類型放在最前面,這樣便于閱讀,因為它們是外部訪問時所要了解的。一般情況下,一個類的數(shù)據(jù)成員應該聲明為私有成員,這樣封裝性較好。一個類應該有一些公有的函數(shù)成員,作為對外的接口,否則別的代碼無法訪問類2、類的聲明2021/9/2111北京郵電大學電信工程學院計算機技術中心類的成員函數(shù)描述的是類的行為或操作。函數(shù)的原型聲明要在類的主體中,原型說明了函數(shù)的參數(shù)表和返回值類型。而函數(shù)的具體實現(xiàn)一般是寫在類聲明之外的。在類的外部定義成員函數(shù)的語法形式為:返回值類型類名::成員函數(shù)名
7、(參數(shù)表){函數(shù)體}3、類的成員函數(shù)2021/9/2112北京郵電大學電信工程學院計算機技術中心如果在類的內(nèi)部定義成員函數(shù)的具體實現(xiàn),則該成員函數(shù)為內(nèi)聯(lián)成員函數(shù)。函數(shù)定義時沒有任何的附加說明,所以稱為隱式聲明的內(nèi)聯(lián)成員。3、類的成員函數(shù)2021/9/2113北京郵電大學電信工程學院計算機技術中心定義一個對象和定義一個一般變量相同。定義變量時要分配存儲空間,同樣,定義一個對象時要分配存儲空間,一個對象所占的內(nèi)存空間是類的數(shù)據(jù)成員所占的空間總和。類的成員函數(shù)存放在代碼區(qū),不占內(nèi)存空間。類的成員是抽象的,對象的成員才是具體的。類的數(shù)據(jù)成員都不會有
8、具體的屬性值。只有對象的成員才會有具體的屬性值。4、對象2021/9/2114北京郵電大學電信工程學院計算機技術中心聲明了類及其對象,在類的外部(指類定義和成員函數(shù)的實現(xiàn)代碼之外