我們知道struct是c語言的寵兒,當需要乙個複雜型別的時候就需要定義乙個struct
比如乙個學生結構體,含有三個屬性,分別是編號、名字和年齡。
1 typedef struct當我們用乙個鍊錶將他們存起來,即指標指向struct,然後便可以對所有學生進行檢視、刪除、修改和增加,這不就是你曾經做過的簡單學生管理系統嗎??student
2;
你甚至可以在struct內部定義實現函式,比如:
vc++ 6.0編譯
1 typedef structstudent211
12int
getage()
1316
17student()
1822 };
1vs2017編譯intmain()
2
1甚至,你可以為屬性和操作加上限定public,private限定,沒有問題。struct
mystruct214
void setage(int
_age)
1518
intgetage()
1922 };
1到這兒,你可能會疑惑了:用類來實現不是差不多嗎?public:2
intid;
3char name[20];4
private:5
int age;
試一下
1你沒看錯,就是只要把關鍵字struct換成class就可以了。功能完全相同。class
myclass2;
5 ~myclass() {};67
void setage(int
_age)811
intgetage()
1215
public:16
intid;
17char name[20
];18
private:19
intage;
20 };
進而,你可以試試繼承、多型,struct完全可以像class那樣實現。
好了,問題來了
struct和class有什麼區別?核心區別就只有一條,預設的讀取許可權不同。struct是public,而class是private。我們可以看下面例子。(屬性不做限制,再看他們的讀取許可權)
結果是,struct可以正常讀取,而class因為預設是private所以無法讀取屬性。
還有其他區別嗎?class可用於宣告類模板,而struct不可以即struct不是模板型別,不可做為型別模板引數。
summary:
1. 預設許可權(struct-public, class-private)
2. 是否可用於宣告模板(struct不可以, class可以)
其實,推敲他們的區別,沒什麼意義。在使用過程中用你習慣的那種方式,即單純宣告資料集合體就用struct,有屬性和操作就用class,就可以了。
參考資料
到底有多二
7 3 到底有多二 15 分 乙個整數 犯二的程度 定義為該數字中包含2的個數與其位數的比值。如果這個數是負數,則程度增加0.5倍 如果還是個偶數,則再增加1倍。例如數字 13142223336是個11位數,其中有3個2,並且是負數,也是偶數,則它的犯二程度計算為 3 11 1.5 2 100 約為...
到底有多少記憶體
在虛擬記憶體模型下,理論上有 2gb的記憶體供程式使用。當 virtualalloc 或者其他函式提交虛擬記憶體時,虛擬記憶體管理器就開始消耗 ram。當物理記憶體將被消耗完時,管理器就開始將記憶體頁面對映到硬碟。在預設的設定下,作業系統會用硬碟的所有可用空間來作為磁碟交換檔案。因此,記憶體的限制並...
到底有多二
l1 017 到底有多二 15 分 乙個整數 犯二的程度 定義為該數字中包含2的個數與其位數的比值。如果這個數是負數,則程度增加0.5倍 如果還是個偶數,則再增加1倍。例如數字 13142223336是個11位數,其中有3個2,並且是負數,也是偶數,則它的犯二程度計算為 3 11 1.5 2 100...