淺談C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別
今天我們來看一下:C結(jié)構(gòu)和C++結(jié)構(gòu)之間,到底有什么不一樣地方!
在C++中,struct和class完全相同,除了struct默認(rèn)為公共可見性和class默認(rè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語言:
這將在C中產(chǎn)生一個錯誤,但在C ++中不會產(chǎn)生任何錯誤。
輸出:num = 9
直接初始化:我們無法在C中直接初始化結(jié)構(gòu)數(shù)據(jù)成員,但可以在C ++中完成。
輸出:7
使用struct關(guān)鍵字:在C語言中,我們需要使用struct來聲明一個struct變量。在C ++中,沒有必要使用struct。例如,讓Record有一個結(jié)構(gòu)。在C語言中,我們必須對記錄變量使用“結(jié)構(gòu)記錄”。在C ++中,我們不需要使用struct,而僅使用'Record'才可以。
靜態(tài)成員: C結(jié)構(gòu)不能具有靜態(tài)成員,但C++允許使用。
這將在C中產(chǎn)生一個錯誤,但在C ++中不會產(chǎn)生任何錯誤。
在結(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個
sizeof運算符:此運算符將為C中的空結(jié)構(gòu)生成0,而為C ++中的空結(jié)構(gòu)生成1。
在C中的輸出: 0
在C ++中的輸出: 1個
數(shù)據(jù)隱藏: C結(jié)構(gòu)不允許數(shù)據(jù)隱藏的概念,但在C ++中是允許的,因為C ++是一種面向?qū)ο蟮恼Z言,而C語言則不是。
訪問修飾符: C結(jié)構(gòu)沒有訪問修飾符,因為語言不支持這些修飾符。由于C ++結(jié)構(gòu)是用語言內(nèi)置的,因此可以具有此概念。
到此這篇關(guān)于淺談C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別的文章就介紹到這了,更多相關(guān)C結(jié)構(gòu)和C++結(jié)構(gòu)區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
你知道如何自定義sort函數(shù)中的比較函數(shù)
這篇文章主要介紹了如何自定義sort函數(shù)中的比較函數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12C語言編程數(shù)據(jù)結(jié)構(gòu)棧與隊列的全面講解示例教程
本文介紹著重介紹數(shù)據(jù)結(jié)構(gòu)-棧和隊列的知識,由于本文也設(shè)計多個動態(tài)內(nèi)存開辟函數(shù),小伙伴們在學(xué)習(xí)本文之前,一定一定一定要把動態(tài)內(nèi)存開辟相關(guān)知識掌握牢固,這樣學(xué)習(xí)起本文才能事半功倍2021-10-10c++中?isupper()和islower()函數(shù)詳解
在C++中,islower()和isupper()是C++標(biāo)準(zhǔn)庫中提供的兩個字符判斷函數(shù),這兩個函數(shù)用于判斷一個字符是否為小寫字母或大寫字母,這篇文章主要介紹了c++?isupper()?islower()的相關(guān)資料,需要的朋友可以參考下2024-05-05OpenCV實現(xiàn)鼠標(biāo)在圖像上框選單目標(biāo)和多目標(biāo)
這篇文章主要為大家詳細(xì)介紹了OpenCV實現(xiàn)鼠標(biāo)在圖像上框選單目標(biāo)和多目標(biāo),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08