類和物件(1)

2021-09-17 21:18:47 字數 3064 閱讀 6082

1.類與物件的初步認知

c語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函式呼叫逐步解決問題。資料和運算元據的方法是分離開的。

c++是基於物件導向的,關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成。結構體中不僅僅可以放資料,也可以放函式。

2.類的引入

c語言中,結構體中只能定義變數,在c++中,結構體內不僅可以定義變數,也可以定義函式。

struct student

void

printstudentinfo()

char _name[20]

;

char _gender[3]

;

int _age;};

int main()

class

classname

;// 一定要注意後面的分號

c++中用class來代替struct

3.類的定義

class

classname

;//注意分號

class為定義類的關鍵字,classname為類的名字,{}中為類的主體,注意類定義結束時後面分號。

類中的元素稱為類的成員:類中的資料稱為類的屬性或者成員變數; 類中的函式稱為類的方法或者成員函式。

類的兩種定義方式:

宣告和定義全部放在類體中,需要注意:成員函式如果在類中定義,編譯器可能會將其當成內聯函式處 理。

宣告放在.**件中,類的定義放在.cpp檔案

類的訪問限定符及封裝

訪問限定符

c++實現封裝的方式:用類將物件的屬性與方法結合在一塊,讓物件更加完善,通過訪問許可權選擇性的將其 介面提供給外部的使用者使用。

public修飾的成員在類外可以直接被訪問

protected和private修飾的成員在類外不能直接被訪問(此處protected和private是類似的)

訪問許可權作用域從該訪問限定符出現的位置開始直到下乙個訪問限定符出現時為止

class的預設訪問許可權為private,struct為public(因為struct要相容c)

乙個類裡可新增多個訪問限定符

訪問限定符只在編譯時有用,當資料對映到記憶體後,沒有任何訪問限定符上的區別。

c++中struct和class的區別是什麼?

c++需要相容c語言,所以c++中struct可以當成結構體去使用。另外c++中struct還可以用來定義類。 和class是定義類是一樣的,區別是struct的成員預設訪問方式是public,class是struct的成員預設訪問方式 是private。

物件導向的三大特性:封裝、繼承、多型

封裝:將資料和運算元據的方法進行有機結合,隱藏物件的屬性和實現細節,僅對外公開介面來和物件進行 互動

類的作用域

類定義了乙個新的作用域,類的所有成員都在類的作用域中。在類體外定義成員,需要使用 :: 作用域解析符 指明成員屬於哪個類域。

class

person

// 這裡需要指定printpersoninfo是屬於person這個類域

void person:

:printpersoninfo()

類的例項化

類物件模型

如何計算類物件的大小

結論:乙個類的大小,實際就是該類中」成員變數」之和,當然也要進行記憶體對齊,注意空類的大小,空模擬 較特殊,編譯器給了空類乙個位元組來唯一標識這個類。

this指標

如圖,s1,s2呼叫同乙個方法,成員函式如何知道操作哪個物件?

class

student

void

printstudent()

private

: int _age[3]

; char _gender[3]

; char _name[20]

;}int main()

this指標的特性

this指標的型別:類型別* const

只能在「成員函式」的內部使用

this指標本質上其實是乙個成員函式的形參,是物件呼叫成員函式時,將物件位址作為實參傳遞給this 形參。所以物件中不儲存this指標。

this指標是成員函式第乙個隱含的指標形參,一般情況由編譯器通過ecx暫存器自動傳遞,不需要使用者傳遞

this由編譯器維護

void

testfunc

(....)

int main()

判斷方法:遮蔽函式內容,報錯為:_thiscall,此種函式時由exc方式傳參;而報錯為_cdecl,此種方法是由引數壓棧方式傳參的。

this為空

class

aprivate

: int a;

}int main()

1 類和物件

1 類和物件.h import 注意檔名稱與類名沒有什麼實質的關係,創造類時最好把檔名和類名設定成一致的,目的方便使用 oc中類的宣告標誌是 inte ce end student 當前類名 nsobject 父類名 代表繼承關係 inte ce student nsobject 所有的特徵與行為都...

類和物件1

類 物件物件的三大特性 類和物件的區別 類是靜態定義 物件是動態例項 程式 操作的是物件而非類 建模得到的是類而非物件 類和物件的 聯絡 類是物件的定義 物件的產生離不開類這個模板 類存在的目的是例項化得到物件 定義類的步驟 1.類名,2.類的資料成員代表屬性,3.編寫類的方法代表行為 類的建模是乙...

類和物件(1)

1.類和物件的初步認知 c語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函式呼叫逐步解決問題。c 是基於物件導向的,關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成。2.類的引入 c語言中,結構體只能定義變數,在c 中,結構體內不僅可以定義變數,也可以定義函式。3.類的定義...