国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++入門:類和對(duì)象(上)

這篇具有很好參考價(jià)值的文章主要介紹了C++入門:類和對(duì)象(上)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

前言:

一:初識(shí)面向過(guò)程和面向?qū)ο?/p>

二:類的引入

三:封裝和類的訪問(wèn)限定符

(1)封裝

(2)訪問(wèn)限定符

四:類的作用域和類的定義

(1)作用域

(2)類的定義

五:類的實(shí)例化(對(duì)象)

六:類對(duì)象的存儲(chǔ)模型

(1)結(jié)構(gòu)體內(nèi)存對(duì)齊

(2)對(duì)象及其成員函數(shù)的存儲(chǔ)模型

七:this指針

(1)引例:

(2)成因

(3)this指針的特性


前言:

C++專欄內(nèi)容連貫,沒(méi)展開(kāi)講的重要內(nèi)容都在專欄往期。

為方便語(yǔ)法學(xué)習(xí),直接展開(kāi)std命名空間。

C++入門:類和對(duì)象(上)

個(gè)人主頁(yè)鏈接:https://blog.csdn.net/2301_76269963?type=blog


一:初識(shí)面向過(guò)程和面向?qū)ο?/h2>

C語(yǔ)言是面向過(guò)程的,關(guān)注的是過(guò)程,分析求解步驟,通過(guò)函數(shù)逐步解決問(wèn)題。

以洗衣服這個(gè)事情為例子:

C++入門:類和對(duì)象(上)


C++是面向?qū)ο蟮模?span style="color:#4da8ee;">關(guān)注的是對(duì)象,將一件事情涉及到的對(duì)象分離出來(lái),依靠對(duì)象間的交互來(lái)解決問(wèn)題。

C++入門:類和對(duì)象(上)


二:類的引入

在C語(yǔ)言中,我們會(huì)用結(jié)構(gòu)體來(lái)表示一些較復(fù)雜的事物,但是結(jié)構(gòu)體中只能聲明變量,不能聲明和定義函數(shù),C++中引入了類的概念,在結(jié)構(gòu)體的基礎(chǔ)上聲明或者定義函數(shù),我們稱為類。

C++入門:類和對(duì)象(上)


struct關(guān)鍵字雖然可以用來(lái)定義類,但是C++中定義類更喜歡用class關(guān)鍵字。

(涉及到封裝和兼容性)

C++入門:類和對(duì)象(上)

這里成員函數(shù)都是直接在類中定義的,聲明定義分離的寫法等把訪問(wèn)限定符和域講完了再來(lái)說(shuō)。


三:封裝和類的訪問(wèn)限定符

(1)封裝

面向?qū)ο蟮娜筇匦裕悍庋b、繼承、多態(tài)。

封裝:將數(shù)據(jù)和操作數(shù)據(jù)的方法進(jìn)行有機(jī)結(jié)合,隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外公開(kāi)接口來(lái)和對(duì)象進(jìn)行交互。

封裝本質(zhì)上是一種管理,其目的是讓用戶更方便使用類。比如:對(duì)電腦這樣復(fù)雜的設(shè)備,用戶只需要使用開(kāi)關(guān)機(jī)鍵、鍵盤、鼠標(biāo)等就可以和電腦進(jìn)行交互了,完成日常事務(wù)了。但是電腦上實(shí)際工作的卻是CPU、內(nèi)存、顯卡這些硬件。
對(duì)使用者來(lái)說(shuō),不需要關(guān)心內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),設(shè)計(jì)者也不希望使用者觸及到內(nèi)核,因此計(jì)算機(jī)廠商在出廠時(shí),在外部套上殼子,將內(nèi)部實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái),僅僅對(duì)外提供開(kāi)關(guān)機(jī)、鼠標(biāo)以及鍵盤插孔等,讓用戶可以與計(jì)算機(jī)進(jìn)行交互即可。

那么C++是如何實(shí)現(xiàn)細(xì)節(jié)隱藏的呢?

(2)訪問(wèn)限定符

C++實(shí)現(xiàn)封裝的方式:用類將對(duì)象的屬性與方法結(jié)合在一塊,讓對(duì)象更加完善,通過(guò)訪問(wèn)權(quán)限選擇性的將其接口提供給外部的用戶使用。

?

三個(gè)訪問(wèn)限定符:

C++入門:類和對(duì)象(上)

?C++入門:類和對(duì)象(上)

訪問(wèn)限定符的說(shuō)明:

? ? 1.public修飾的成員在類外可以直接被訪問(wèn)

? ? 2.protected和private修飾的成員在類外不能直接被訪問(wèn)(此處protected和private類似)

? ? 3.訪問(wèn)權(quán)限作用域從該訪問(wèn)限定符出現(xiàn)的位置開(kāi)始直到下一個(gè)訪問(wèn)限定符出現(xiàn)時(shí)為止

? ? 4.如果后面沒(méi)有訪問(wèn)限定符,作用域就到 },即類結(jié)束

? ? 5.class定義的類的默認(rèn)訪問(wèn)權(quán)限為private,struct為public(因?yàn)閟truct要兼容C)


四:類的作用域和類的定義

(1)作用域

C++中用{ }括起來(lái)的部分都可以稱為一個(gè)域。

為了加深理解,我舉個(gè)例子:

C++入門:類和對(duì)象(上)

C++入門:類和對(duì)象(上)

C++入門:類和對(duì)象(上)


類定義了一個(gè)新的作用域,類的所有成員都在類的作用域中。在類體外定義成員時(shí),需要使用 :: 作用域操作符指明成員函數(shù)屬于哪個(gè)類域。

(2)類的定義

類的兩種定義方式:
【1】聲明和定義都放在類體中(注意:如果函數(shù)在類體中定義,會(huì)被當(dāng)成內(nèi)聯(lián)函數(shù)處理)。
【2】聲明定義分離,類體中只有聲明,大多數(shù)情況下適合用這種(注意:分離的話定義處函數(shù)名前面要加類名::)。

C++入門:類和對(duì)象(上)

C++入門:類和對(duì)象(上)


成員變量命名規(guī)則的建議:

混亂的寫法:

C++入門:類和對(duì)象(上)

?正常的寫法:

C++入門:類和對(duì)象(上)


五:類的實(shí)例化(對(duì)象)

類和對(duì)象的關(guān)系就像房屋和設(shè)計(jì)圖紙一樣,其中類是設(shè)計(jì)圖紙,對(duì)象是借由這個(gè)圖紙建立的房屋。圖紙說(shuō)明了房屋大概需要什么材料,并沒(méi)有像房屋一樣成為占用大量空間的實(shí)體,所以類只是說(shuō)明了類中都有什么成員,并沒(méi)有占用內(nèi)存空間,實(shí)例化出的對(duì)象才占用了空間。

C++入門:類和對(duì)象(上)

C++入門:類和對(duì)象(上)


六:類對(duì)象的存儲(chǔ)模型

(1)結(jié)構(gòu)體內(nèi)存對(duì)齊

涉及到對(duì)象大小計(jì)算,先介紹一下結(jié)構(gòu)體內(nèi)存對(duì)齊。

一:對(duì)齊的規(guī)則

【1】結(jié)構(gòu)體內(nèi)的成員變量會(huì)按照定義順序依次存放,其中第一個(gè)成員在結(jié)構(gòu)體變量偏移量為0的地址處。

【2】每個(gè)成員變量的起始地址必須是對(duì)齊數(shù)的整數(shù)倍,對(duì)齊數(shù)為編譯器默認(rèn)對(duì)齊數(shù)與該成員大小中較小的一方,如果不足則補(bǔ)齊到整數(shù)倍。

(我用的是VS,默認(rèn)對(duì)齊數(shù)為8)

【3】結(jié)構(gòu)體的總大小必須是結(jié)構(gòu)體中最大成員的大小的整數(shù)倍,如果不足則補(bǔ)齊到整數(shù)倍。

【4】如果結(jié)構(gòu)體成員有數(shù)組,則規(guī)則適用于數(shù)組中的每個(gè)元素。


幾個(gè)題目

C++入門:類和對(duì)象(上)

圖解:

C++入門:類和對(duì)象(上)


C++入門:類和對(duì)象(上)

圖解:

C++入門:類和對(duì)象(上)


C++入門:類和對(duì)象(上)

圖解:

C++入門:類和對(duì)象(上)

(2)對(duì)象及成員函數(shù)的存儲(chǔ)模型

C++入門:類和對(duì)象(上)

如果每個(gè)對(duì)象都一份保存相同的函數(shù)代碼,當(dāng)一個(gè)類實(shí)例化多個(gè)對(duì)象時(shí),相同代碼保存多次,無(wú)疑是浪費(fèi)空間的,所以采用了下面的存儲(chǔ)方法。

C++入門:類和對(duì)象(上)


七:this指針

(1)引例:

C++入門:類和對(duì)象(上)

?C++入門:類和對(duì)象(上)

(2)成因

C語(yǔ)言中,要借由函數(shù)改變結(jié)構(gòu)體變量的值,必須傳它的指針

C++入門:類和對(duì)象(上)

我們已經(jīng)知道類的成員函數(shù)是存儲(chǔ)在公共區(qū)的,不是某一個(gè)對(duì)象的私有,C++是如何實(shí)現(xiàn)直接訪問(wèn)并修改的呢?

C++入門:類和對(duì)象(上)

原因很簡(jiǎn)單,C++編譯器給每個(gè)“非靜態(tài)的成員函數(shù)“(不加static)增加了一個(gè)隱藏的指針參數(shù),讓該指針指向當(dāng)前對(duì)象(函數(shù)運(yùn)行時(shí)調(diào)用該函數(shù)的對(duì)象),在函數(shù)體中所有“成員變量”的訪問(wèn),都是通過(guò)該指針去訪問(wèn)。只不過(guò)所有的操作對(duì)用戶是透明的,即用戶不需要來(lái)傳遞,編譯器自動(dòng)完成解引用的操作。

我們回過(guò)頭來(lái)看上面的題目:

C++入門:類和對(duì)象(上)

C++入門:類和對(duì)象(上)

?C++入門:類和對(duì)象(上)

空類的注意點(diǎn):

注意空類的大小,空類比較特殊,編譯器給了空類一個(gè)字節(jié)來(lái)唯一標(biāo)識(shí)這個(gè)類的對(duì)象。

C++入門:類和對(duì)象(上)

(3)this指針的特性

1. this指針的類型:類類型* const,即成員函數(shù)中,不能給this指針賦值

(const修飾在 * 之后,代表指針這個(gè)值本身不能更改)

2. 只能在“成員函數(shù)”的內(nèi)部使用

3. this指針本質(zhì)上是“成員函數(shù)”的形參,當(dāng)對(duì)象調(diào)用成員函數(shù)時(shí),將對(duì)象地址作為實(shí)參傳遞給this形參。所以對(duì)象中不存儲(chǔ)this指針

4.this指針是“成員函數(shù)”第一個(gè)隱含的指針形參,一般情況由編譯器通過(guò)寄存器自動(dòng)傳遞,不需要用戶傳遞

5.雖然編譯器會(huì)自動(dòng)實(shí)現(xiàn)解引用操作,但是手動(dòng)解引用訪問(wèn)成員變量也是支持的。不能手動(dòng)傳this指針這個(gè)隱藏的參數(shù)。

C++入門:類和對(duì)象(上)

C++入門:類和對(duì)象(上)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-479170.html

到了這里,關(guān)于C++入門:類和對(duì)象(上)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包