結(jié)構(gòu)體定義的三種形式 class和struct的區(qū)別?
class和struct的區(qū)別?類和結(jié)構(gòu)之間的差異:1。類是引用類型,結(jié)構(gòu)是值類型;2。類可以繼承類,接口可以繼承,結(jié)構(gòu)只能繼承接口,不能繼承;3。類有默認(rèn)的無(wú)參數(shù)構(gòu)造函數(shù),析構(gòu)函數(shù),struct沒(méi)有
class和struct的區(qū)別?
類和結(jié)構(gòu)之間的差異:
1。類是引用類型,結(jié)構(gòu)是值類型;
2。類可以繼承類,接口可以繼承,結(jié)構(gòu)只能繼承接口,不能繼承;
3。類有默認(rèn)的無(wú)參數(shù)構(gòu)造函數(shù),析構(gòu)函數(shù),struct沒(méi)有默認(rèn)的無(wú)參數(shù)構(gòu)造函數(shù),并且只能聲明無(wú)參數(shù)構(gòu)造函數(shù),沒(méi)有析構(gòu)函數(shù);
4可以使用abstract和sealed,有保護(hù)修飾符,結(jié)構(gòu)不能使用abstract和sealed,沒(méi)有保護(hù)修飾符;
5,類必須使用新的初始化,結(jié)構(gòu)不能使用新的初始化;
6、類實(shí)例通過(guò)垃圾回收機(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)變量按值傳遞。
結(jié)構(gòu)體和類一起使用可以嗎/?
為了使結(jié)構(gòu)具有封裝的特性,C并不是簡(jiǎn)單地繼承C的結(jié)構(gòu),而是使它具有類的特性,這樣它就可以用于面向?qū)ο缶幊?。用struct聲明的結(jié)構(gòu)類型實(shí)際上是類類型。但是兩個(gè)聲明的類之間有區(qū)別。如果希望共享成員,則使用struct更方便。如果您希望某些成員是私有的,那么應(yīng)該使用class。建議盡量使用class來(lái)創(chuàng)建一個(gè)類,編寫(xiě)一個(gè)充分體現(xiàn)C風(fēng)格的程序。