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

C++中結(jié)構(gòu)體與類(lèi)的使用區(qū)別及說(shuō)明

 更新時(shí)間:2025年10月14日 09:11:01   作者:IT.Husky  
這篇文章主要介紹了C++中結(jié)構(gòu)體與類(lèi)的使用區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在參與以C++為編程基礎(chǔ)的項(xiàng)目應(yīng)用中總會(huì)遇到結(jié)構(gòu)體類(lèi)型與類(lèi)的數(shù)據(jù)類(lèi)型,但是其具體應(yīng)用區(qū)別模糊不清

現(xiàn)將其區(qū)別總結(jié)如下(先介紹C和C++中結(jié)構(gòu)體的不同,再對(duì)比C++中結(jié)構(gòu)體與類(lèi)的區(qū)別)

一、C和C++中結(jié)構(gòu)體的不同

(1)C語(yǔ)言中的結(jié)構(gòu)體不能為空,否則會(huì)報(bào)錯(cuò)

C語(yǔ)言中要求一個(gè)結(jié)構(gòu)或聯(lián)合至少有一個(gè)成員。C語(yǔ)言中,空結(jié)構(gòu)體的大小為0,而C++中空結(jié)構(gòu)體(屬于空類(lèi))的大小為1

(2)C語(yǔ)言中的結(jié)構(gòu)體只涉及到數(shù)據(jù)結(jié)構(gòu),而不涉及到算法

在C語(yǔ)言中數(shù)據(jù)結(jié)構(gòu)和算法是分離的。換句話說(shuō)就是C語(yǔ)言中的結(jié)構(gòu)體只能定義成員變量,但是不能定義成員函數(shù)

然而在C++中既可以定義成員變量又可以定義成員函數(shù), C++中的結(jié)構(gòu)體和類(lèi)體現(xiàn)了數(shù)據(jù)結(jié)構(gòu)和算法的結(jié)合

不過(guò)雖然C語(yǔ)言的結(jié)構(gòu)體中不能定義成員函數(shù),但是卻可以定義函數(shù)指針,不過(guò)函數(shù)指針本質(zhì)上不是函數(shù)而是指針,所以總的來(lái)說(shuō)C語(yǔ)言中的結(jié)構(gòu)體只是一個(gè)復(fù)雜數(shù)據(jù)類(lèi)型 ,只能定義成員變量,不能定義成員函數(shù),不能用于面向?qū)ο缶幊?/p>

(3)C語(yǔ)言中定義結(jié)構(gòu)變量時(shí)不可省略struct關(guān)鍵字,C++可以省略

在C語(yǔ)言中使用struct定義的結(jié)構(gòu)體中在定義變量的時(shí)候,struct不能省略

但是在C++之中則可以省略struct

二、C++中結(jié)構(gòu)體與類(lèi)的區(qū)別

C++中的struct對(duì)C中的struct進(jìn)行了擴(kuò)充,它已經(jīng)不再只是一個(gè)包含不同數(shù)據(jù)類(lèi)型的數(shù)據(jù)結(jié)構(gòu)了,它已經(jīng)獲取了太多的功能

  • struct能包含成員函數(shù)嗎? 能!
  • struct能繼承嗎? 能!!
  • struct能實(shí)現(xiàn)多態(tài)嗎? 能!??!

既然這些它都能實(shí)現(xiàn),那它和class還能有什么區(qū)別?

最本質(zhì)的一個(gè)區(qū)別就是默認(rèn)的訪問(wèn)控制: 

默認(rèn)的繼承訪問(wèn)權(quán)限struct是public的,class是private的

C++中,不使用結(jié)構(gòu)體絲毫不會(huì)影響程序的表達(dá)能力。C++之所以要引入結(jié)構(gòu)體,是為了保持和C程序的兼容性

但有時(shí)仍會(huì)在C++中使用結(jié)構(gòu)體,是因?yàn)榭梢允褂媒Y(jié)構(gòu)體將不同類(lèi)型數(shù)據(jù)組成整體,方便于保存數(shù)據(jù)(若用類(lèi)來(lái)保存,因類(lèi)中成員默認(rèn)為私有,還要為每個(gè)數(shù)據(jù)成員特定函數(shù)來(lái)讀取和改寫(xiě)各個(gè)屬性,比較麻煩)

struct可以繼承class,同樣class也可以繼承struct

struct是一種數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)體,雖然它是可以像class一樣的用。我依舊將struct里的變量叫數(shù)據(jù),class內(nèi)的變量叫成員,雖然它們并無(wú)區(qū)別

三、總結(jié)

  • 概念:class和struct的語(yǔ)法基本相同,從聲明到使用,都很相似,但是struct的約束要比class多,理論上,struct能做到的class都能做到,但class能做到的stuct卻不一定做的到
  • 類(lèi)型:struct是值類(lèi)型,class是引用類(lèi)型,因此它們具有所有值類(lèi)型和引用類(lèi)型之間的差異
  • 效率:由于堆棧的執(zhí)行效率要比堆的執(zhí)行效率高,但是堆棧資源卻很有限,不適合處理邏輯復(fù)雜的大對(duì)象,因此struct常用來(lái)處理作為基類(lèi)型對(duì)待的小對(duì)象,而class來(lái)處理某個(gè)商業(yè)邏輯
  • 關(guān)系:struct不僅能繼承也能被繼承 ,而且可以實(shí)現(xiàn)接口,不過(guò)Class可以完全擴(kuò)展。內(nèi)部結(jié)構(gòu)有區(qū)別,struct只能添加帶參的構(gòu)造函數(shù),不能使用abstract和protected等修飾符,不能初始化實(shí)例字段

牛人總結(jié):

(1) 在表示諸如點(diǎn)、矩形等主要用來(lái)存儲(chǔ)數(shù)據(jù)的輕量級(jí)對(duì)象時(shí),首選struct

(2) 在表示數(shù)據(jù)量大、邏輯復(fù)雜的大對(duì)象時(shí),首選class

(3) 在表現(xiàn)抽象和多級(jí)別的對(duì)象層次時(shí),class是最佳選擇 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

腾冲县| 图们市| 纳雍县| 公主岭市| 德江县| 田林县| 沙湾县| 南昌县| 惠州市| 平乐县| 科技| 阿鲁科尔沁旗| 田东县| 榆社县| 康定县| 奈曼旗| 陆丰市| 文成县| 合阳县| 措美县| 宣化县| 化州市| 济南市| 天气| 邵东县| 柞水县| 栖霞市| 孝昌县| 岱山县| 桑日县| 鄂托克前旗| 筠连县| 桑日县| 米脂县| 达孜县| 石嘴山市| 吉首市| 通化县| 苏尼特左旗| 镇安县| 波密县|