C與C++中結(jié)構(gòu)體的區(qū)別
C中的結(jié)構(gòu)體和C++中結(jié)構(gòu)體的不同之處:在C中的結(jié)構(gòu)體只能自定義數(shù)據(jù)類型,結(jié)構(gòu)體中不允許有函數(shù),而C++中的結(jié)構(gòu)體可以加入成員函數(shù)。
C++中的結(jié)構(gòu)體和類的異同:
一、相同之處:結(jié)構(gòu)體中可以包含函數(shù);也可以定義public、private、protected數(shù)據(jù)成員;定義了結(jié)構(gòu)體之后,可以用結(jié)構(gòu)體名來創(chuàng)建對象。但C中的結(jié)構(gòu)體不允許有函數(shù);也就是說在C++當中,結(jié)構(gòu)體中可以有成員變量,可以有成員函數(shù),可以從別的類繼承,也可以被別的類繼承,可以有虛函數(shù)。
二、不同之處:結(jié)構(gòu)體定義中默認情況下的成員是public,而類定義中的默認情況下的成員是private的。類中的非static成員函數(shù)有this指針,(而struct中沒有是錯誤的,一直被誤導啊,經(jīng)過測試struct的成員函數(shù)一樣具有this指針),類的關鍵字class能作為template模板的關鍵字 即template<class T> class A{}; 而struct不可以。
實際上,C中的結(jié)構(gòu)體只涉及到數(shù)據(jù)結(jié)構(gòu),而不涉及到算法,也就是說在C中數(shù)據(jù)結(jié)構(gòu)和算法是分離的,而到C++中一類或者一個結(jié)構(gòu)體可以包含函數(shù)(這個函數(shù)在C++我們通常中稱為成員函數(shù)),C++中的結(jié)構(gòu)體和類體現(xiàn)了數(shù)據(jù)結(jié)構(gòu)和算法的結(jié)合。
- 深入剖析C++中的struct結(jié)構(gòu)體字節(jié)對齊
- 詳解C++中的指針結(jié)構(gòu)體數(shù)組以及指向結(jié)構(gòu)體變量的指針
- C++結(jié)構(gòu)體用法實例分析
- C++基礎入門教程(三):數(shù)組、字符串、結(jié)構(gòu)體、共用體
- C++結(jié)構(gòu)體數(shù)組詳細解析
- C++中指向結(jié)構(gòu)體變量的指針
- C/C++語言中結(jié)構(gòu)體的內(nèi)存分配小例子
- 淺析C++中結(jié)構(gòu)體的定義、初始化和引用
- 一道超經(jīng)典的C++結(jié)構(gòu)體的題目
- 詳解C++程序中定義struct結(jié)構(gòu)體的方法
相關文章
C++中set/multiset與map/multimap的使用詳解
這篇文章主要為大家詳細介紹了C++中set/multiset與map/multimap的使用,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2023-02-02c語言中十進制轉(zhuǎn)二進制顯示小工具的實現(xiàn)代碼
本篇文章是對c語言中十進制轉(zhuǎn)二進制顯示小工具的實現(xiàn)代碼進行了詳細的分析的介紹,需要的朋友參考下2013-05-05詳解如何在code block創(chuàng)建一個C語言的項目
這篇文章主要介紹了詳解如何在code block創(chuàng)建一個C語言的項目,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12