結(jié)構(gòu)struct和類class的區(qū)別 class和struct的區(qū)別?
class和struct的區(qū)別?類和結(jié)構(gòu)之間的差異:1。類是引用類型,結(jié)構(gòu)是值類型;2。類可以繼承類,接口可以繼承,結(jié)構(gòu)只能繼承接口,不能繼承;3。類有默認(rèn)的無參數(shù)構(gòu)造函數(shù),析構(gòu)函數(shù),struct沒有
class和struct的區(qū)別?
類和結(jié)構(gòu)之間的差異:
1。類是引用類型,結(jié)構(gòu)是值類型;
2。類可以繼承類,接口可以繼承,結(jié)構(gòu)只能繼承接口,不能繼承;
3。類有默認(rèn)的無參數(shù)構(gòu)造函數(shù),析構(gòu)函數(shù),struct沒有默認(rèn)的無參數(shù)構(gòu)造函數(shù),并且只能聲明無參數(shù)構(gòu)造函數(shù),沒有析構(gòu)函數(shù);
4可以使用abstract和sealed,有保護(hù)修飾符,結(jié)構(gòu)不能使用abstract和sealed,沒有保護(hù)修飾符;
5,類必須使用新的初始化,結(jié)構(gòu)不能使用新的初始化;
6、類實(shí)例通過垃圾回收機(jī)制保證內(nèi)存處理的恢復(fù),并且結(jié)構(gòu)變量使用后立即自動(dòng)釋放內(nèi)存分配;
7、從函數(shù)角度看,類代表行為,而struct通常用于存儲(chǔ)數(shù)據(jù);
8。當(dāng)它作為參數(shù)傳遞時(shí),類變量按地址傳遞,而結(jié)構(gòu)變量按值傳遞。
struct跟class有什么區(qū)別?
C和C在結(jié)構(gòu)上基本沒有區(qū)別。struct與class的區(qū)別在于class引入了類的概念,是一種面向?qū)ο蟮乃枷?,并加入了公共保護(hù)私有的概念。而且比結(jié)構(gòu)、繼承、重載、多態(tài)等更復(fù)雜。struct和class類型的變量和對(duì)象在申請(qǐng)空間和釋放空間時(shí)也有不同的操作。
5.請(qǐng)問C 的class和C里面的struct有什么區(qū)別?
在標(biāo)準(zhǔn)C中,結(jié)構(gòu)和類有兩個(gè)區(qū)別:第一,結(jié)構(gòu)中的成員默認(rèn)為公共的,類中的成員默認(rèn)為私有的。
另外,如果沒有多態(tài)性和虛擬繼承,C中結(jié)構(gòu)和類的訪問效率是完全相同的!總之,類訪問數(shù)據(jù)成員和非虛函數(shù)的效率與struct相同!數(shù)據(jù)成員是在基類還是派生類中定義的。
如果不是為了與C兼容,C中將沒有struct關(guān)鍵字。因此建議:如果不需要與C兼容或向C程序傳遞參數(shù),請(qǐng)不要在C中使用struct
請(qǐng)注意,內(nèi)存中類的數(shù)據(jù)成員的布局不一定是數(shù)據(jù)成員的聲明順序。C只確保同一訪問節(jié)中的數(shù)據(jù)成員按聲明的順序排列。