相同點(diǎn):
- 都可以將多個(gè)屬性封裝為一個(gè)整體。
不同點(diǎn)
- 結(jié)構(gòu)體只能封裝數(shù)據(jù),而類不僅可以封裝數(shù)據(jù)還可以封裝行為(封裝方法)甘畅。
- 結(jié)構(gòu)體變量分配在椆∪铮空間(如果是一個(gè)局部變量的情況下),而對象分配在堆空間往弓。
- 棧的特點(diǎn): 空間相對較小,但是存儲在棧中的數(shù)據(jù)訪問的效率更高一些。
- 堆的特點(diǎn): 空間相對較大,但是存儲在堆中的數(shù)據(jù)訪問的效率相對要低蓄氧。
- 賦值不同,結(jié)構(gòu)體是值拷貝,類是對象地址函似。
應(yīng)用場景
- 如果表示的這個(gè)實(shí)體不僅是由多個(gè)數(shù)據(jù)組成,這個(gè)實(shí)體還有行為,不解釋只能使用類。
- 如果表示的實(shí)體沒有行為,光有屬性
- 如果屬性較少,只有幾個(gè),那么這個(gè)時(shí)候定義為結(jié)構(gòu)體,分配在 棧提高效率匀们。
- 如果屬性較多,不要定義結(jié)構(gòu)體,因?yàn)檫@樣結(jié)構(gòu)體變量會在棧中占據(jù)很大一塊空間反而影響效率缴淋。