學(xué)習(xí)啦>生活課堂>生活小常識(shí)>

類和結(jié)構(gòu)的區(qū)別

時(shí)間: 志峰887 分享

  類(class)與結(jié)構(gòu)(struct)都是創(chuàng)建對(duì)象的模版,每個(gè)對(duì)象都包含數(shù)據(jù),并提供了處理和訪問數(shù)據(jù)的方法。類與結(jié)構(gòu)的區(qū)別是它們?cè)趦?nèi)存中的存儲(chǔ)方式、訪問方式和一些特性的不同。下面是學(xué)習(xí)啦小編為大家準(zhǔn)備的類和結(jié)構(gòu)的區(qū)別,希望大家喜歡!

  類和結(jié)構(gòu)的區(qū)別篇一

  結(jié)構(gòu)是一種用關(guān)鍵字struct聲明的自定義數(shù)據(jù)類型。與類相似,也可以包含構(gòu)造函數(shù),常數(shù),字段,方法,屬性,索引器,運(yùn)算符和嵌套類型等,不過,結(jié)構(gòu)是值類型。

  類和結(jié)構(gòu)的區(qū)別篇二

  結(jié)構(gòu)的構(gòu)造函數(shù)和類的構(gòu)造函數(shù)不同。

  a.結(jié)構(gòu)不能包含顯式的無參數(shù)構(gòu)造函數(shù)。結(jié)構(gòu)成員講自動(dòng)初始化為它們的默認(rèn)值。

  b.結(jié)構(gòu)不能包含以下形式的初始值設(shè)定類:base(argument-list);

  類和結(jié)構(gòu)的區(qū)別篇三

  對(duì)于結(jié)構(gòu)中的實(shí)例字段成員,不能在聲明時(shí)賦值初始化。

  類和結(jié)構(gòu)的區(qū)別篇四

  聲明了結(jié)構(gòu)類型后,可以使用new運(yùn)算符創(chuàng)建構(gòu)造對(duì)象,也可以不使用new關(guān)鍵字。如果不使用new,那么在初始化所有字段之前,字段將保持未賦值狀態(tài)且對(duì)象不可用。

  類和結(jié)構(gòu)的區(qū)別篇五

  結(jié)構(gòu)不支持繼承,即一個(gè)結(jié)構(gòu)不能從另一個(gè)結(jié)構(gòu)或類繼承,而且不能作為一個(gè)類的基類。但是,結(jié)構(gòu)從基類OBJECT繼承。結(jié)構(gòu)也可以實(shí)現(xiàn)接口。

  類和結(jié)構(gòu)的區(qū)別篇六

  什么時(shí)候用結(jié)構(gòu)呢?結(jié)構(gòu)使用簡單,并且很有用,但是要牢記:結(jié)構(gòu)在堆棧中創(chuàng)建,是值類型,而類是引用類型。每當(dāng)需要一種經(jīng)常使用的類型,而且大多數(shù)情況下該類型只是一些數(shù)據(jù)時(shí),使用結(jié)構(gòu)能比使用類獲得更佳性能。

  編者的話

  結(jié)構(gòu)是值類型,所以會(huì)影響性能,但根據(jù)使用結(jié)構(gòu)的方式,這種影響可能是正面的,也可能是負(fù)面的。正面的影響是為結(jié)構(gòu)分配內(nèi)存時(shí),速度非??欤?yàn)樗鼈儗?nèi)聯(lián)或者保存在堆棧中。在結(jié)構(gòu)超出了作用域被刪除時(shí),速度也很快。另一方面,只要把結(jié)構(gòu)作為參數(shù)來傳遞或者把一個(gè)結(jié)構(gòu)賦給另一個(gè)結(jié)構(gòu)(例如A=B,其中A和B是結(jié)構(gòu)),結(jié)構(gòu)的所有內(nèi)容就被復(fù)制,而對(duì)于類,則只復(fù)制引用。這樣,就會(huì)有性能損失,根據(jù)結(jié)構(gòu)的大小,性能損失也不同。注意,結(jié)構(gòu)主要用于小的數(shù)據(jù)結(jié)構(gòu)。但當(dāng)把結(jié)構(gòu)作為參數(shù)傳遞給方法時(shí),就應(yīng)把它作為ref參數(shù)傳遞,以避免性能損失——此時(shí)只傳遞了結(jié)構(gòu)在內(nèi)存中的地址,這樣傳遞速度就與在類中的傳遞速度一樣快了。另一方面,如果這樣做,就必須注意被調(diào)用的方法可以改變結(jié)構(gòu)的值。

1747766