亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++淺析類與對(duì)象的基礎(chǔ)

 更新時(shí)間:2022年05月26日 09:00:32   作者:?jiǎn)虇碳业凝堼? 
類和對(duì)象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語(yǔ)言的合稱。對(duì)象是對(duì)客觀事物的抽象,類是對(duì)對(duì)象的抽象。類是一種抽象的數(shù)據(jù)類型;變量就是可以變化的量,存儲(chǔ)在內(nèi)存中—個(gè)可以擁有在某個(gè)范圍內(nèi)的可變存儲(chǔ)區(qū)域

面向過(guò)程和面向?qū)ο?/h2>

類和對(duì)象是 C++ 的核心特性

我們之前的C語(yǔ)言就屬于面向過(guò)程,關(guān)注過(guò)程,分析求解問(wèn)題的步驟再通過(guò)函數(shù)調(diào)用解決問(wèn)題;而現(xiàn)在C++是基于面向?qū)ο螅P(guān)注對(duì)象,將一個(gè)問(wèn)題拆分成不同對(duì)象,依靠對(duì)象之間的交互完成。

比如有一個(gè)圖書館系統(tǒng),用C語(yǔ)言面向過(guò)程思路就是:統(tǒng)計(jì)圖書,圖書分類,同步上架圖書數(shù)據(jù),記錄借閱信息。而面向?qū)ο笪覀儠?huì)創(chuàng)建兩個(gè)類,圖書館和用戶,我們關(guān)心的是圖書館和用戶之間的關(guān)系,再分別實(shí)現(xiàn)交互,這里簡(jiǎn)單提一下你可能不是很好理解,但是沒有關(guān)系,我們后序會(huì)慢慢學(xué)習(xí)的。

類的引入

類用于指定對(duì)象的形式,它包含了數(shù)據(jù)表示法和用于處理數(shù)據(jù)的方法,類中的數(shù)據(jù)和方法稱為類的成員。定義一個(gè)類,本質(zhì)上是定義一個(gè)數(shù)據(jù)類型的藍(lán)圖

最開始的老大哥在引入類的概念時(shí)是利用結(jié)構(gòu)體引入的,C++ 兼容 C 的用法但同時(shí)也對(duì)C的結(jié)構(gòu)體進(jìn)行了升級(jí),升級(jí)成了類,其重要標(biāo)志就是結(jié)構(gòu)體名稱可以做類型其次結(jié)構(gòu)體里面可以定義函數(shù),,相比升級(jí)后的 struct 我們更喜歡使用 class ,class 下它定義了類的對(duì)象包括了什么,以及可以在這個(gè)對(duì)象上執(zhí)行哪些操作,struct 和 class 都可以用來(lái)定義類。

訪問(wèn)限定符

C++引出一個(gè)概念叫封裝,那他就提出一個(gè)東西叫訪問(wèn)限定符,訪問(wèn)限定符是指類里面的東西我不一定都想拿給你用,能給你用的我會(huì)用 public 關(guān)鍵字聲明,數(shù)據(jù)就可以直接被訪問(wèn),當(dāng)沒有 public 聲明時(shí),class 默認(rèn)數(shù)據(jù)為私有(protected 和 private)類型,而 struct 不加限定符默認(rèn)為公有(public)的因?yàn)樗嫒?C。

privata 私有域限制的是從域外面進(jìn)行訪問(wèn),鎖只對(duì)外人,里面的類是可以訪問(wèn)到 private 的。

現(xiàn)階段我們認(rèn)為 protected 和 private 是一樣的,他們的不同會(huì)在學(xué)習(xí)繼承時(shí)體現(xiàn)出來(lái)。

class Student
{
public:
  …………
}

我們也可以加多個(gè)訪問(wèn)限定符,因?yàn)?C++ 會(huì)默認(rèn)你的類型從第一個(gè)訪問(wèn)限定符開始到下一個(gè)結(jié)束,這個(gè)之間的區(qū)域就是對(duì)應(yīng)的訪問(wèn)類型。如果后面沒有訪問(wèn)限定符作用域就會(huì)在遇到 } 后結(jié)束,注意訪問(wèn)限定符只在編譯的時(shí)候有用,在數(shù)據(jù)映射到內(nèi)存后,就沒有任何訪問(wèn)限定符上的區(qū)別了。

封裝

封裝,繼承,多態(tài)并稱面向?qū)ο蟮娜筇匦浴?/p>

要講封裝就要和 C語(yǔ)言 做對(duì)比,比如我們C語(yǔ)言定義了一個(gè)棧 stack,我要對(duì)這個(gè)棧進(jìn)行入棧出棧的操作,我就要在外面自己搞一個(gè) StackPush 和 StackPop 函數(shù),很直觀的看出我們數(shù)據(jù)和方法是分離開來(lái)的,而分離開來(lái)的最大問(wèn)題就是松散自由,我沒有辦法對(duì)他進(jìn)行集中的管理。

為什么這么說(shuō),因?yàn)槲乙坏┫脒M(jìn)行打印這種類似的操作,除了直接調(diào)用尋找棧頂元素的函數(shù),就是直接使用成員訪問(wèn)操作符寫成(stack.a[stack.top-1]),別人在使用時(shí)就可能會(huì)誤用,不知道是棧頂元素還是棧頂元素下一個(gè)。

封裝的意義就是更好的管理,還是那句話,young man,太自由你把握不住。說(shuō)難聽點(diǎn),C語(yǔ)言這種松散自由的局面只適合高素質(zhì)程序員,我們不能要求每個(gè)人都有高素質(zhì)去切合代碼,而C++的約束才是更貼近大多數(shù)人的方式

而 C++ 首先會(huì)把數(shù)據(jù)和方法封裝到一起,便于我們更好的控制,想自由訪問(wèn)的設(shè)計(jì)成公有,不想直接拿出來(lái)訪問(wèn)的設(shè)計(jì)成私有,像這樣:

class Stack
{
 public:
    void Push() 
    {}
    void Pop()
    {}
private:
    int* data;
    int size;
    int capacity;
}

所以一般情況下我們?cè)O(shè)計(jì)類,成員數(shù)據(jù)或者沒必要調(diào)用的函數(shù)都是私有或者保護(hù),想給訪問(wèn)的蔡設(shè)計(jì)成公有,所以 C++ 封裝就是將數(shù)據(jù)和操作數(shù)據(jù)的方法進(jìn)行有機(jī)結(jié)合,隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外公開接口和對(duì)象進(jìn)行交互,相比C語(yǔ)言更加嚴(yán)謹(jǐn)。

類的作用域

類里面用來(lái)定義的空間就是類的作用域,他和命名空間類似,都有域。

注意成員函數(shù)如果在類里面定義,編譯器可能會(huì)默認(rèn)把他當(dāng)成 inline 內(nèi)聯(lián)函數(shù)處理,這就暗示了實(shí)際中短小函數(shù)可以直接在類里面定義,長(zhǎng)一點(diǎn)的函數(shù)定義和聲明要分開。我們類里面什么都沒有的就是空類,大小為 0;而當(dāng)類對(duì)象沒有成員變量時(shí)不能說(shuō)是空類,編譯會(huì)給他們分配 1 byte 表示對(duì)象存在過(guò)。

類的實(shí)例化

用類創(chuàng)建對(duì)象的過(guò)程,就稱為類的實(shí)例化。

類不能存數(shù)據(jù),類定義出的對(duì)象才能用來(lái)存數(shù)據(jù),所以我說(shuō)類就像一張圖紙,有了房子才能住人。那么問(wèn)題來(lái)了,房子修好了我怎么算大小呢,成員變量和函數(shù)參差不齊的,這里就要知道他是怎么考慮的,其實(shí)他計(jì)算大小時(shí)值算了成員變量,不考慮成員函數(shù)!。

其實(shí)很簡(jiǎn)單,因?yàn)橥饷嬲{(diào)的每個(gè)同名函數(shù)是同一個(gè)函數(shù),我沒必要再去每個(gè)對(duì)象里面去存?zhèn)€他的指針,那就純純的浪費(fèi)了,函數(shù)名實(shí)際上是存放在了內(nèi)存的公共代碼區(qū)。但是成員變量就要各存一份了,因?yàn)椴煌瑢?duì)象里面他們的值不一定是相同的,他們相對(duì)獨(dú)立。

到此這篇關(guān)于C++淺析類與對(duì)象的基礎(chǔ)的文章就介紹到這了,更多相關(guān)C++類與對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解C語(yǔ)言中const關(guān)鍵字的用法

    詳解C語(yǔ)言中const關(guān)鍵字的用法

    這篇文章主要對(duì)C語(yǔ)言中const關(guān)鍵字的用法進(jìn)行了詳細(xì)的分析介紹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • 劍指offer之判斷鏈表是否包含環(huán)

    劍指offer之判斷鏈表是否包含環(huán)

    今天小編就為大家分享一篇關(guān)于劍指offer之判斷鏈表是否包含環(huán),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • C/C++ 中怎樣使用SetConsoleTextAttribute()函數(shù)來(lái)控制輸出字符的顏色

    C/C++ 中怎樣使用SetConsoleTextAttribute()函數(shù)來(lái)控制輸出字符的顏色

    這篇文章主要介紹了C/C++ 中如何使用SetConsoleTextAttribute()函數(shù)來(lái)控制輸出字符的顏色,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • C++11/14 線程的創(chuàng)建與分離的實(shí)現(xiàn)

    C++11/14 線程的創(chuàng)建與分離的實(shí)現(xiàn)

    這篇文章主要介紹了C++11/14 線程的創(chuàng)建與分離的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 快速模式匹配算法(KMP)的深入理解

    快速模式匹配算法(KMP)的深入理解

    本篇文章是對(duì)快速模式匹配算法(KMP)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中如何修改const變量你知道嗎

    C++中如何修改const變量你知道嗎

    這篇文章主要為大家詳細(xì)介紹了C++修改const變量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C語(yǔ)言簡(jiǎn)易實(shí)現(xiàn)掃雷小游戲

    C語(yǔ)言簡(jiǎn)易實(shí)現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言簡(jiǎn)易實(shí)現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C/C++中接收return返回來(lái)的數(shù)組元素方法示例

    C/C++中接收return返回來(lái)的數(shù)組元素方法示例

    return是C++預(yù)定義的語(yǔ)句,它提供了種植函數(shù)執(zhí)行的一種放大,最近學(xué)習(xí)中遇到了相關(guān)return的內(nèi)容,覺著有必要總結(jié)一下,這篇文章主要給大家介紹了關(guān)于C/C++中如何接收return返回來(lái)的數(shù)組元素的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • 詳解C++模板編程中typename用法

    詳解C++模板編程中typename用法

    typename在C++類模板或者函數(shù)模板中經(jīng)常使用的關(guān)鍵字,此時(shí)作用和class相同,只是定義模板參數(shù),下面通過(guò)例子給大家介紹c++模板typename的具體用法,一起看看吧
    2021-07-07
  • C語(yǔ)言開發(fā)簡(jiǎn)易版掃雷小游戲

    C語(yǔ)言開發(fā)簡(jiǎn)易版掃雷小游戲

    本文給大家分享的是一個(gè)使用C語(yǔ)言開發(fā)的命令行下的簡(jiǎn)易版掃雷小游戲,本身沒有什么太多的技術(shù)含量,只不過(guò)是筆者的處女作,所以還是推薦給大家,希望對(duì)大家學(xué)習(xí)C能夠有所幫助。
    2015-12-12

最新評(píng)論