最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

類的引入

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

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

訪問限定符

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

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

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

class Student
{
public:
  …………
}

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

封裝

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

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

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

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

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

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

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

類的作用域

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

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

類的實例化

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

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

其實很簡單,因為外面調(diào)的每個同名函數(shù)是同一個函數(shù),我沒必要再去每個對象里面去存?zhèn)€他的指針,那就純純的浪費了,函數(shù)名實際上是存放在了內(nèi)存的公共代碼區(qū)。但是成員變量就要各存一份了,因為不同對象里面他們的值不一定是相同的,他們相對獨立。

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

相關(guān)文章

  • C++中volatile關(guān)鍵字及常見的誤解總結(jié)

    C++中volatile關(guān)鍵字及常見的誤解總結(jié)

    這篇文章主要給大家介紹了關(guān)于C++中volatile關(guān)鍵字及常見的誤解的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • C語言實現(xiàn)會員管理系統(tǒng)

    C語言實現(xiàn)會員管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)會員管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 使用C++調(diào)用Python代碼的方法步驟

    使用C++調(diào)用Python代碼的方法步驟

    這篇文章主要介紹了使用C++調(diào)用Python代碼的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Qt編譯OpenCV的實現(xiàn)步驟

    Qt編譯OpenCV的實現(xiàn)步驟

    本文主要介紹了Qt編譯OpenCV的實現(xiàn)步驟,通過詳細(xì)的步驟和說明,幫助開發(fā)者在Qt環(huán)境中成功集成并編譯OpenCV,從而為各類計算機(jī)視覺項目提供強(qiáng)大的支持,感興趣的可以了解一下
    2024-01-01
  • C++實現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項)

    C++實現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • c++中bitset的常見用法示例詳解

    c++中bitset的常見用法示例詳解

    C++ 中的?bitset?是一個用于處理固定大小位序列的模板類,提供高效的位操作功能,這篇文章主要介紹了c++中bitset的常見用法,需要的朋友可以參考下
    2025-02-02
  • C語言實現(xiàn)旅游景點咨詢系統(tǒng)

    C語言實現(xiàn)旅游景點咨詢系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)旅游景點咨詢系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C語言中的BYTE和char深入解析

    C語言中的BYTE和char深入解析

    在C語言中,字符(character)這個術(shù)語具有兩個層次上的含義:書寫源程序的字符和程序處理的字符
    2013-10-10
  • C語言實現(xiàn)的一個三子棋游戲詳解流程

    C語言實現(xiàn)的一個三子棋游戲詳解流程

    三子棋是一種民間傳統(tǒng)游戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋等。將正方形對角線連起來,相對兩邊依次擺上三個雙方棋子,只要將自己的三個棋子走成一條線,對方就算輸了
    2021-10-10
  • c++程序字符型的實例講解

    c++程序字符型的實例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于
    2020-02-02

最新評論

南昌县| 温泉县| 阳东县| 五原县| 通化县| 应用必备| 云阳县| 兴城市| 宜宾县| 噶尔县| 乌海市| 高邮市| 策勒县| 鞍山市| 灌云县| 金寨县| 丹棱县| 阳朔县| 甘泉县| 莫力| 万山特区| 凤城市| 西藏| 北安市| 九江县| 杭州市| 南汇区| 绥滨县| 论坛| 庄浪县| 岑溪市| 绥芬河市| 积石山| 德阳市| 常熟市| 久治县| 临桂县| 方正县| 昂仁县| 新沂市| 嘉黎县|