欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

類和對象是 C++ 的核心特性

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

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

類的引入

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

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

訪問限定符

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

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

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

class Student
{
public:
  …………
}

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

封裝

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

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

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

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

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

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

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

類的作用域

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

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

類的實(shí)例化

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

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

其實(shí)很簡單,因?yàn)橥饷嬲{(diào)的每個(gè)同名函數(shù)是同一個(gè)函數(shù),我沒必要再去每個(gè)對象里面去存?zhèn)€他的指針,那就純純的浪費(fèi)了,函數(shù)名實(shí)際上是存放在了內(nèi)存的公共代碼區(qū)。但是成員變量就要各存一份了,因?yàn)椴煌瑢ο罄锩嫠麄兊闹挡灰欢ㄊ窍嗤?,他們相對?dú)立。

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

相關(guān)文章

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

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

    這篇文章主要對C語言中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à)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • C/C++ 中怎樣使用SetConsoleTextAttribute()函數(shù)來控制輸出字符的顏色

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

    這篇文章主要介紹了C/C++ 中如何使用SetConsoleTextAttribute()函數(shù)來控制輸出字符的顏色,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(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),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 快速模式匹配算法(KMP)的深入理解

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

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

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

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

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

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

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

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

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

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

    C語言開發(fā)簡易版掃雷小游戲

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

最新評論