資源描述:
《c++類及設(shè)計(jì),構(gòu)造函數(shù)和析構(gòu)函數(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、類是編程人員表達(dá)自定義數(shù)據(jù)類型的C++機(jī)制。它和C語(yǔ)言中的結(jié)構(gòu)類似,C++類支持?jǐn)?shù)據(jù)抽象和面向?qū)ο蟮某绦蛟O(shè)計(jì),從某種意義上說,也就是數(shù)據(jù)類型的設(shè)計(jì)和實(shí)現(xiàn)。一、類的設(shè)計(jì)1.類的聲明class類名{private://私有...public://公有...};2.類的成員一般在C++類中,所有定義的變量和函數(shù)都是類的成員。如果是變量,我們就叫它數(shù)據(jù)成員如果是函數(shù),我們就叫它成員函數(shù)。3.類成員的可見性private和public訪問控制符決定了成員的可見性。由一個(gè)訪問控制符設(shè)定的可訪問狀態(tài)將一直持續(xù)到下一個(gè)訪問控制符出現(xiàn),或者類聲明的結(jié)束。私有成員僅能被同一
2、個(gè)類中的成員函數(shù)訪問,公有成員既可以被同一類中的成員函數(shù)訪問,也可以被其他已經(jīng)實(shí)例化的類中函數(shù)訪問。當(dāng)然,這也有例外的情況,這是以后要討論的友元函數(shù)。類中默認(rèn)的數(shù)據(jù)類型是private,結(jié)構(gòu)中的默認(rèn)類型是public。一般情況下,變量都作為私有成員出現(xiàn),函數(shù)都作為公有成員出現(xiàn)。類中還有一種訪問控制符protected,叫保護(hù)成員,以后再說明。4.初始化在聲明一個(gè)類的對(duì)象時(shí),可以用圓括號(hào)()包含一個(gè)初始化表??聪旅嬉粋€(gè)例子:#includeiostream.hclassBox{private:intheight,width,depth;//3個(gè)私有數(shù)據(jù)成員
3、public:Box(int,int,int);~Box();intvolume();//成員函數(shù)};Box::Box(intht,intwd,intdp){height=ht;width=wd;depth=dp;}Box::~Box(){//nothing}intBox::volume(){returnheight*width*depth;}intmain(){Boxthisbox(3,4,5);//聲明一個(gè)類對(duì)象并初始化cout<4、時(shí),也沒有虛函數(shù),并且不是從其他類中派生出來的,可以用{}來初始化。(以后再講解)5.內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別是:內(nèi)聯(lián)函數(shù)是在編譯過程中展開的。通常內(nèi)聯(lián)函數(shù)必須簡(jiǎn)短。定義類的內(nèi)聯(lián)函數(shù)有兩種方法:一種和C語(yǔ)言一樣,在定義函數(shù)時(shí)使用關(guān)鍵字inline。如:inlineintBox::volume(){returnheight*width*depth;}還有一種方法就是直接在類聲明的內(nèi)部定義函數(shù)體,而不是僅僅給出一個(gè)函數(shù)原型。我們把上面的函數(shù)簡(jiǎn)化一下:#includeiostream.hclassBox{private:intheight,width,
5、depth;public:Box(intht,intwd,intdp){height=ht;width=wd;depth=dp;}~Box();intvolume(){returnheight*width*depth;}};intmain(){Boxthisbox(3,4,5);//聲明一個(gè)類對(duì)象并初始化cout<6、在一個(gè)類中有多個(gè)構(gòu)造函數(shù)。如果一個(gè)都沒有,編譯器將為該類產(chǎn)生一個(gè)默認(rèn)的構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)可能會(huì)完成一些工作,也可能什么都不做。絕對(duì)不能指定構(gòu)造函數(shù)的類型,即使是void型都不可以。實(shí)際上構(gòu)造函數(shù)默認(rèn)為void型。當(dāng)一個(gè)類的對(duì)象進(jìn)入作用域時(shí),系統(tǒng)會(huì)為其數(shù)據(jù)成員分配足夠的內(nèi)存,但是系統(tǒng)不一定將其初始化。和內(nèi)部數(shù)據(jù)類型對(duì)象一樣,外部對(duì)象的數(shù)據(jù)成員總是初始化為0。局部對(duì)象不會(huì)被初始化。構(gòu)造函數(shù)就是被用來進(jìn)行初始化工作的。當(dāng)自動(dòng)類型的類對(duì)象離開其作用域時(shí),所站用的內(nèi)存將釋放回系統(tǒng)??瓷厦娴睦?,構(gòu)造函數(shù)Box()函數(shù)接受三個(gè)整型擦黑素,并把他們賦值給立方體對(duì)象
7、的數(shù)據(jù)成員。如果構(gòu)造函數(shù)沒有參數(shù),那么聲明對(duì)象時(shí)也不需要括號(hào)。1.使用默認(rèn)參數(shù)的構(gòu)造函數(shù)當(dāng)在聲明類對(duì)象時(shí),如果沒有指定參數(shù),則使用默認(rèn)參數(shù)來初始化對(duì)象。#includeiostream.hclassBox{private:intheight,width,depth;public:Box(intht=2,intwd=3,intdp=4){height=ht;width=wd;depth=dp;}~Box();intvolume(){returnheight*width*depth;}};intmain(){Boxthisbox(3,4,5);//初始化Bo
8、xdefaulbox;//使用默認(rèn)參數(shù)cout<