初識(shí)面向?qū)ο蟆?lèi)

對(duì)面向?qū)ο?/strong>編程來(lái)說(shuō),一切都是對(duì)象,對(duì)象用類(lèi)來(lái)描述
類(lèi)把對(duì)象的數(shù)據(jù)和操作數(shù)據(jù)的方法作為一個(gè)整體考慮
定義類(lèi)
定義類(lèi)的語(yǔ)法
?
類(lèi)的成員可以是變量,也可以是函數(shù)
類(lèi)的成員變量也叫屬性
類(lèi)的成員函數(shù)也叫作方法/行為,類(lèi)的成員函數(shù)可以定義在類(lèi)的外面(類(lèi)中只需聲明即可)
用類(lèi)定義一個(gè)類(lèi)的變量,叫創(chuàng)建(或實(shí)例化)一個(gè)對(duì)象
對(duì)象的成員變量和成員函數(shù)的作用域和生命周期與對(duì)象的作用域和生命周期相同
類(lèi)的訪(fǎng)問(wèn)權(quán)限
類(lèi)的訪(fǎng)問(wèn)權(quán)限有三個(gè)(public(公有)、private(私有)、protected(受保護(hù)的))
把需要向外暴露的成員聲明為public
把需要隱藏類(lèi)的數(shù)據(jù)和實(shí)現(xiàn)的聲明為private
類(lèi)的內(nèi)部可訪(fǎng)問(wèn)public(公有)、private(私有);只有public(公有)能被類(lèi)的外部訪(fǎng)問(wèn)
??在一個(gè)類(lèi)中private和public可以多次出現(xiàn)
簡(jiǎn)單使用類(lèi)
類(lèi)的成員函數(shù)可以直接訪(fǎng)問(wèn)該類(lèi)中其他的成員函數(shù)(可以遞歸)
類(lèi)成員函數(shù)可以重載,可以使用默認(rèn)參數(shù)
?注意事項(xiàng)
void setnameno(string name1,int no1 = 10)
與void setnameno(string name1)
雖然參數(shù)列表不同,但他們不能同時(shí)出現(xiàn),因?yàn)檫@兩個(gè)都可以只傳入姓名參數(shù),編譯器無(wú)法匹配對(duì)應(yīng)的函數(shù)(第一個(gè)函數(shù)學(xué)號(hào)有默認(rèn)參數(shù),當(dāng)不傳入學(xué)號(hào)時(shí),會(huì)采用默認(rèn)參數(shù))
類(lèi)指針的用法與結(jié)構(gòu)體指針用法相同
類(lèi)的成員可以是任意數(shù)據(jù)類(lèi)型(包括類(lèi)中枚舉)——>作用域是類(lèi)
可以為類(lèi)的成員指定缺省值(C++11標(biāo)準(zhǔn))
類(lèi)可以創(chuàng)建對(duì)象數(shù)組,與結(jié)構(gòu)體數(shù)組一樣
對(duì)象可以做為實(shí)參傳遞給函數(shù)(一般為傳傳引用)?如果類(lèi)很小也可以傳值
可以用new創(chuàng)建對(duì)象,用delete釋放對(duì)象
在類(lèi)的外面一般不直接訪(fǎng)問(wèn)(讀和寫(xiě))對(duì)象的成員,而是用成員函數(shù)
對(duì)象一般不用memset()函數(shù)清空成員變量,可以用一個(gè)專(zhuān)門(mén)清空成員變量的成員函數(shù)
對(duì)類(lèi)和對(duì)象使用
sizeof
運(yùn)算符意義不大,一般不用用結(jié)構(gòu)體描述純粹的數(shù)據(jù)(C++內(nèi)置的數(shù)據(jù)類(lèi)型和C風(fēng)格字符串 (沒(méi)有類(lèi)和函數(shù))),用類(lèi)描述對(duì)象
類(lèi)的分文件編寫(xiě)(聲明類(lèi)的代碼放頭文件中,把成員函數(shù)定義的代碼放入源文件中)
在類(lèi)的聲明中定義的函數(shù)該自動(dòng)轉(zhuǎn)化為成員內(nèi)聯(lián)函數(shù),在類(lèi)聲明之外定義的函數(shù)使用
inline
限定符也是內(nèi)聯(lián)函數(shù)
如果一個(gè)函數(shù)是內(nèi)聯(lián)的,那么在編譯時(shí),編譯器會(huì)把該函數(shù)的代碼副本放置在每個(gè)調(diào)用該函數(shù)的地方。
在類(lèi)定義中的定義的函數(shù)都是內(nèi)聯(lián)函數(shù),即使沒(méi)有使用 inline 限定符。
引入內(nèi)聯(lián)函數(shù)的目的是為了解決程序中函數(shù)調(diào)用的效率問(wèn)題,這么說(shuō)吧,程序在編譯器編譯的時(shí)候,編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)的調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函數(shù)體進(jìn)行替換,而對(duì)于其他的函數(shù),都是在運(yùn)行時(shí)候才被替代。這其實(shí)就是個(gè)空間代價(jià)換時(shí)間的節(jié)省。所以?xún)?nèi)聯(lián)函數(shù)一般都是1-5行的小函數(shù)。
為了區(qū)分類(lèi)的成員變量和成員函數(shù)的形參,把成員變量名加上m_前綴或后綴,如m_name或者name