C++中Struct與Class的區別

區別: 

爲什麼要有struct的存在呢?首先的原因自然是保持對C的兼容。原先的C代碼可以不必修 
改就成爲合法的C++代碼。第二個原因(個人愚見),是爲了讓struct來表示抽象的數據類 
型以及抽象接口,而與class所表示的類的概念相區別。 

1.C++中的結構struct和C中的struct不同,實際上C++的中的struct和class一樣,在C++中 
,也可以爲結構定義成員函數,惟一不同在於默認的存取權限,class中若沒有指定成員的 
存取權限,則默認爲private成員,而struct中沒有指定成員存取權限,默認是public成員 
。 

2.C++中的struct保持了對C中struct的全面兼容(這符合C++的初衷——“a better c”) 
,因而,下面的操作是合法的: 

//定義struct 
struct structA 

char a; 
char b; 
int c; 
}; 
structA a = {'a' , 'a' ,1}; // 定義時直接賦初值 
  即struct可以在定義的時候直接以{ }對其成員變量賦初值,而class則不能,在經典 
書目《thinking C++ 2nd edition》中作者對此點進行了強調。 

另外還有強調的就是: 

構造函數,析構函數 this 指針方面不同,在C的struct裏沒有,在寫在C++裏的話,就都有這 
個屬性了,因爲C++裏對struct對象當作類對象來處理的. 

構造函數,析構函數,繼承,多態什麼的在結構體都能用 
1, 只是結構體成員變量和成員函數默認的是public類默認的是private。 
2, 繼承是不是也不一樣, struct默認是public的, class默認是private的。 

-- 
凡事只要盡力去愛,就能夠在某種程度上愛起來 
只要儘可能心情愉快地活下去,就能夠在某種程度上如願以償 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章