C/C++編程筆記:C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別

今天我們來(lái)看一下:C結(jié)構(gòu)和C++結(jié)構(gòu)之間,到底有什么不一樣地方!

在C++中,struct和class完全相同,除了struct默認(rèn)為公共可見(jiàn)性和class默認(rèn)為私有可見(jiàn)性。?
C和C ++結(jié)構(gòu)之間的一些重要區(qū)別:
結(jié)構(gòu)內(nèi)部的成員函數(shù):C中的結(jié)構(gòu)不能在結(jié)構(gòu)內(nèi)部具有成員函數(shù),但是C ++中的結(jié)構(gòu)可以與數(shù)據(jù)成員一起具有成員函數(shù)。
C語(yǔ)言:

這將在C中產(chǎn)生一個(gè)錯(cuò)誤,但在C ++中不會(huì)產(chǎn)生任何錯(cuò)誤。?

輸出:num = 9
直接初始化:我們無(wú)法在C中直接初始化結(jié)構(gòu)數(shù)據(jù)成員,但可以在C ++中完成。?

輸出:7
使用struct關(guān)鍵字:在C語(yǔ)言中,我們需要使用struct來(lái)聲明一個(gè)struct變量。在C ++中,沒(méi)有必要使用struct。例如,讓Record有一個(gè)結(jié)構(gòu)。在C語(yǔ)言中,我們必須對(duì)記錄變量使用“結(jié)構(gòu)記錄”。在C ++中,我們不需要使用struct,而僅使用'Record'才可以。
靜態(tài)成員:?C結(jié)構(gòu)不能具有靜態(tài)成員,但C++允許使用。

這將在C中產(chǎn)生一個(gè)錯(cuò)誤,但在C ++中不會(huì)產(chǎn)生任何錯(cuò)誤。?
在結(jié)構(gòu)中創(chuàng)建構(gòu)造函數(shù):C中的結(jié)構(gòu)不能在結(jié)構(gòu)內(nèi)部具有構(gòu)造函數(shù),但是C ++中的結(jié)構(gòu)可以具有構(gòu)造函數(shù)創(chuàng)建。

輸出:2個(gè)
sizeof運(yùn)算符:此運(yùn)算符將為C中的空結(jié)構(gòu)生成0,而為C ++中的空結(jié)構(gòu)生成1。?

在C中的輸出: 0
在C ++中的輸出: 1個(gè)
數(shù)據(jù)隱藏:?C結(jié)構(gòu)不允許數(shù)據(jù)隱藏的概念,但在C ++中是允許的,因?yàn)镃 ++是一種面向?qū)ο蟮恼Z(yǔ)言,而C語(yǔ)言則不是。
訪問(wèn)修飾符:?C結(jié)構(gòu)沒(méi)有訪問(wèn)修飾符,因?yàn)檎Z(yǔ)言不支持這些修飾符。由于C ++結(jié)構(gòu)是用語(yǔ)言內(nèi)置的,因此可以具有此概念。?
每日分享小知識(shí),希望對(duì)你有幫助~
另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
