日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++中 结构体和类的区别

發布時間:2023/12/18 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++中 结构体和类的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

區別:

結構是一種用關鍵字struct聲明的自定義數據類型。與類相似,也可以包含構造函數,常數,字段,方法,屬性,索引器,運算符和嵌套類型等,不過,結構是值類型。

1.結構的構造函數和類的構造函數不同。

?? a.結構不能包含顯式的無參數構造函數。結構成員將自動初始化為它們的默認值。

?? b.結構不能包含以下形式的初始值設定類:base(argument-list);

2.對于結構中的實例字段成員,不能在聲明時賦值初始化。

3.聲明了結構類型后,可以使用new運算符創建構造對象,也可以不使用new關鍵字。如果不使用new,那么在初始化所有字段之前,字段將保持未賦值狀態且對象不可用。

4.結構不支持繼承,即一個結構不能從另一個結構或類繼承,而且不能作為一個類的基類。但是,結構從基類OBJECT繼承。結構也可以實現接口。

?

5.什么時候用結構呢?結構使用簡單,并且很有用,但是要牢記:結構在堆棧中創建,是值類型,而類是引用類型,在?;蚨阎袆摻?#xff08;具體看創建方式)。每當需要一種經常使用的類型,而且大多數情況下該類型只是一些數據時,使用結構能比使用類獲得更佳性能。

new?的話結構也是在棧中創建,類則是在堆中創建

結構是值類型,所以會影響性能,但根據使用結構的方式,這種影響可能是正面的,也可能是負面的。正面的影響是為結構分配內存時,速度非常快,因為它們將內聯或者保存在堆棧中。在結構超出了作用域被刪除時,速度也很快。另一方面,只要把結構作為參數來傳遞或者把一個結構賦給另一個結構(例如A=B,其中A和 B是結構),結構的所有內容就被復制,而對于類,則只復制引用。這樣,就會有性能損失,根據結構的大小,性能損失也不同。注意,結構主要用于小的數據結 構。但當把結構作為參數傳遞給方法時,就應把它作為ref參數傳遞,以避免性能損失——此時只傳遞了結構在內存中的地址,這樣傳遞速度就與在類中的傳遞速 度一樣快了。另一方面,如果這樣做,就必須注意被調用的方法可以改變結構的值。

還有一點:struct 與class本質上應該是相同的,只是默認的訪問權限不同(struct默認是public,class默認是private ).之所以要保留struct,很大一部分原因是為了與C兼容吧(C++的一篇文章中是這么說的,我感覺還是有一定的道理). class感覺是應該是struct的擴充,除了可以設置成員的訪問類型外,還可以有自己的成員函數,可以繼承派生等,好象struct能做的class 都能做,但反過來就不行了,如果沒有保護數據的要求,struct能做的我都用struct做,比較簡單。

總結

以上是生活随笔為你收集整理的c++中 结构体和类的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。