相同點:
-
都可以將多個數(shù)據(jù)封裝為一個整體
-
結(jié)構(gòu)體也可以被認(rèn)為是一種特殊的類,它不存在任何函數(shù),構(gòu)造和析構(gòu)函數(shù)也沒有持搜,而且是一個公共的的類
不同點:
1侯勉、結(jié)構(gòu)體只能封裝數(shù)據(jù),類不僅可以封裝屬性還可以封裝方法
2、 結(jié)構(gòu)體變量分配在棧空間(如果是是1個局部變量的情況下),而對象分配在堆空間
1??棧的特點:空間相對較小怎披,但是存儲在棧中得數(shù)據(jù)訪問的效率稍高一些
2??堆的特點:空間的相對較大,但是存儲在堆中的數(shù)據(jù)瓶摆,效率低一些
3??存儲在棧中得數(shù)據(jù)訪問效率高凉逛, 存儲在堆中得數(shù)據(jù)效率低
3、類型關(guān)系
- 類:引用類型群井,對象之間是(地址)
位于棧上的指針(引用)
位于堆上的實體對象 - 結(jié)構(gòu)體:值類型状飞,(拷貝)
實例直接位于棧中
- 如果封裝的數(shù)據(jù),不僅有數(shù)據(jù)還有方法书斜,只能使用類
- 如果表示實體诬辈,沒有行為,只有屬性:
a荐吉、如果屬性較少焙糟,只有幾個的情況下,就定義為結(jié)構(gòu)體样屠,分配在棧穿撮,提高運行效率
b、如果屬性較多痪欲,就不要定義為結(jié)構(gòu)體悦穿,因為這樣結(jié)構(gòu)體變量會在棧中占據(jù)很大一塊空間,反而會影響效率
4业踢、使用
- 類可以繼承栗柒、結(jié)構(gòu)體一般單獨使用
- 結(jié)構(gòu)體作為對象的屬性時,結(jié)構(gòu)體中的屬性是不允許作單獨修改的 (當(dāng)然知举,結(jié)構(gòu)體變成公有屬性還是可以修改結(jié)構(gòu)體的)
內(nèi)存中傍衡,引用類型諸如類是在堆(heap)上深员,而值類型諸如結(jié)構(gòu)體實在棧(stack)上進行存儲和操作负蠕。相比于棧上的操作蛙埂,堆上的操作更加復(fù)雜耗時