類:是對某一類物件的抽象
物件:是某一種類的例項
類是抽象的,不占用記憶體,而物件是具體的,占用儲存空間。
類的定義一般分為宣告部分和實現部分,當類的成員函式的函式體在類的外部定義時,必須由作用域運算子「::」來通知編譯系統該函式所屬的類。
類中的資料成員的型別可以是任意的,但不允許對所定義的資料成員進行初始化。
類型別的宣告形式
class 類名
stud1,
stud2;//
定義了兩個
student
類的物件
3.不出現類名,直接定義物件
class //無類名
private : //宣告以下部分為私有的
public : //宣告以下部分為公用的
}stud1,
stud2;//
定義了兩個無類名的類物件
直接定義物件,在c++
中是合法的、允許的,但卻很少用,也不提倡用。在實際的程式開發中,一般都採用上面
3種方法中的第
1種方法。
物件成員的訪問:
乙個類物件時能訪問該類的公有型成員,不能訪問私有型成員。
若物件是乙個指標,則物件的成員訪問形式為:
《物件指標名
>
—><
成員變數
>
《物件指標名
>
—>《成員函式
>
(<.
參數列》)
「—>
」與「.
」的區別:
「—>
」是乙個表示成員的運算子,「—
>
」用於表示指向物件的指標的成員,而「
.」用於表示一般物件的成員,
《物件指標名
>
—><
成員變數
>
與(*<
物件指標名
>
).<
成員變數
>等價
類和結構體型別的異同
1: 類可以繼承
,結構不可以
.
2: 類是引用型別
,結構是值型別
3: 類在堆中
,結構在棧分配記憶體
聯絡:
class和
structure
很相似,
從技術層面講
,class
是引用,
而structure
則是數值
.有人很形象的說
, class
裡有行動,方法
,成員,是有機體的結合,而
structure
則是活生生的有機體。
區別:
1.值型別與引用型別
結構:是值型別,值型別在
堆疊上分配位址,所有的基型別都是結構型別,例如:int
對應system.int32
結構,string
對應system.string
結構,通過使用結構可以建立更多的值型別。
類:是引用型別,引用型別在
堆上分配位址
堆疊的執行效率要比堆的執行效率高
,可是堆疊的資源有限,不適合處理大的邏輯複雜的物件。所以結構處理作為基型別對待的小物件,而類處理某個商業邏輯 因為結構是值型別所以結構之間的賦值可以建立新的結構,而類是引用型別,類之間的賦值只是複製引用。
注:雖然結構與類的型別不一樣,可是他們的基型別都是物件(object
),c#
中所有型別的基型別都是
object
雖然結構的初始化也使用了new
操作符,可是結構物件依然分配在堆疊上而不是堆上,如果不使用「新建」
(new)
,那麼在初始化所有字段之前,欄位將保持未賦值狀態,且物件不可用
2.繼承性
結構:不能
從另外乙個結構或者類
繼承,本身也不能被繼承,雖然結構沒有明確的用sealed
宣告,可是結構是隱式的
sealed .
類:完全可擴充套件的,除非顯示的宣告sealed
否則類可以繼承其他類和介面,自身也能被繼承
注:雖然結構不能被繼承 可是結構能夠繼承介面,方法和類繼承介面一樣
3.內部結構:
結構:沒有預設的建構函式,但是可以新增建構函式,沒有析構函式,沒有 abstract
和sealed(
因為不能繼承
),不能有
protected
修飾符,可以不使用
new
初始化,在結構中初始化例項欄位是錯誤的
類:有預設的建構函式,有析構函式,可以使用abstract
和sealed
,有protected
修飾符,必須使用
new初始化。
C 類和物件,結構體
趁著中秋放假要多補補知識了,感覺自己對c 了解的不夠紮實,為了更好的工作,只好再來看看。c和c 規定可以用乙個結構體,裡面即可有陣列,也可以有其他變數。c中成員只能是資料,c 除了資料,還可以是函式。但是,c 提供了類這個東西,所以不需要包含函式的結構體。1,結構體 include using na...
C 類與物件探秘 結構體實現類
在c 中,class和struct幾乎沒有區別,非要說有區別,就是預設訪問許可權的區別,class預設私有,struct預設公有,這回主要通過c語言的結構體來了解一下c 類和物件的一些原理。結構體中,可以放變數,還有函式宣告,這裡設定不將函式宣告寫在結構體中。演示類1 struct animal v...
類與結構體
1.c與c 中結構體的不同 1 c中的結構體不能申明函式,只能申明變數 c 中的結構體和類差不多,能申明資料成員,也能申明函式成員 2 c中的結構體不能進行封裝,而c 中由於是 類 可以進行封裝。2.c 中類與結構體的區別 首先說明c 中類與結構體在一定意義上是等價的 區別 1 在預設狀態下,結構體...