C++ class和struct到底有什么區(qū)別詳解
C++ 中保留了C語言的 struct 關鍵字,并且加以擴充。在C語言中,struct 只能包含成員變量,不能包含成員函數(shù)。而在C++中,struct 類似于 class,既可以包含成員變量,又可以包含成員函數(shù)。
C++中的 struct 和 class 基本是通用的,唯有幾個細節(jié)不同:
- 使用 class 時,類中的成員默認都是 private 屬性的;而使用 struct 時,結構體中的成員默認都是 public 屬性的。
- class 繼承默認是 private 繼承,而 struct 繼承默認是 public 繼承。
- class 可以使用模板,而 struct 不能。
C++ 沒有拋棄C語言中的 struct 關鍵字,其意義就在于給C語言程序開發(fā)人員有一個歸屬感,并且能讓C++編譯器兼容以前用C語言開發(fā)出來的項目。
在編寫C++代碼時,我強烈建議使用 class 來定義類,而使用 struct 來定義結構體,這樣做語義更加明確。
使用 struct 來定義類的一個反面教材:
#include <iostream> using namespace std; struct Student{ Student(char *name, int age, float score); void show(); char *m_name; int m_age; float m_score; }; Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ } void Student::show(){ cout<<m_name<<"的年齡是"<<m_age<<",成績是"<<m_score<<endl; } int main(){ Student stu("小明", 15, 92.5f); stu.show(); Student *pstu = new Student("李華", 16, 96); pstu -> show(); return 0; }
運行結果:
小明的年齡是15,成績是92.5
李華的年齡是16,成績是96
這段代碼可以通過編譯,說明 struct 默認的成員都是 public 屬性的,否則不能通過對象訪問成員函數(shù)。如果將 struct 關鍵字替換為 class,那么就會編譯報錯。
到此這篇關于C++ class和struct到底有什么區(qū)別詳解的文章就介紹到這了,更多相關C++ class struct內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言實現(xiàn)通用數(shù)據(jù)結構之通用鏈表
這篇文章主要為大家詳細介紹了c語言實現(xiàn)通用數(shù)據(jù)結構之通用鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11C語言正則表達式詳解 regcomp() regexec() regfree()用法詳解
C語言處理正則表達式常用的函數(shù)有regcomp()、regexec()、regfree()和regerror(),這里就為大家介紹一下,需要的朋友可以參考一下啊2018-04-04使用pybind11封裝C++結構體作為參數(shù)的函數(shù)實現(xiàn)步驟
這篇文章主要介紹了用pybind11封裝C++結構體作為參數(shù)的函數(shù)實現(xiàn)步驟,本文分步驟通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02