C 類和物件的概念

2021-08-20 14:57:29 字數 1309 閱讀 3698

概念:(object oriented programming,縮寫:oop)是一種程式開發的方法。 物件指的是類的例項,將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性、靈活性和擴充套件性

在c語言中使用struct可以對資料進行抽象封裝,在c++中用class封裝程式和資料,其訪問許可權體現了封裝性。

封裝:隱藏物件的屬性和實現細節,僅對外公開介面和物件進行互動

struct不能存放函式,class可以存放成員函式

struct預設的變數和函式都是public,也就是不限制許可權,可在結構外任意訪問,而class預設private

class裡的變數可以先使用可以在定義之前

區域性,全域性,類域和命名空間。其中類的作用域很關鍵。

類的成員在類的作用域內,可以任意互相訪問。物件可以通過 . 運算子訪問共有成員,物件指標用 ->。在類外定義成員,用 ::指明成員函式所屬類域。

類就像是一張圖紙,限定了類的成員,並未分配實際記憶體來儲存,也像是一種自定義資料型別和操作的封裝集合。

用類例項化的物件都擁有自己的物理空間來儲存其成員變數。

class person 

public :

char _name[20]; // 名字

char _***[3]; // 性別

int _age; // 年齡

}; sizeof(person) //值為28

上面的**說明兩點

類和結構體一樣,存在記憶體對齊問題

函式不在類體內儲存,也不存函式指標

函式在公共**區存放,因為所有物件的資料不同但是方法是相同的,因此不必儲存多份。

資料和方法分開存放,方法怎麼和呼叫它的物件聯絡起來?

答案是在函式引數裡增加乙個物件指標,this指標誕生了。

this指標特性:

是 類物件 * const 型別

是類成員函式的第乙個預設引數,不能顯式傳遞

this指標不在類物件內儲存,且作用域在成員函式內

只能在非靜態成員函式內使用

什麼是 _thiscall ?

是一種函式呼叫約定,特指引數個數確定的類成員函式的呼叫,this指標的值通過ecx暫存器賦值。

引數個數可變的函式通過壓棧引數的方式(_cdecl)。

define offsetof(s,m) (size_t)&(((s *)0)->m)

作用:求出結構體中某成員相對結構體的偏移位置

其實就是利用編譯器幫我們求取成員m的相對位址。

C 類和物件的概念

c 是一門物件導向的程式語言,理解 c 首先要理解類 class 和物件 object 這兩個概念。c 中的類 class 可以看做c語言中結構體 struct 的公升級版。結構體是一種構造型別,可以包含若干成員變數,每個成員變數的型別可以不同 可以通過結構體來定義結構體變數,每個變數擁有相同的性質...

C 類和物件的基礎概念

類和結構體的區別 盡量將成員成員變數設定為私有許可權 1.類是自定義資料型別,是c語言的結構體的進化 2.物件是類例項化出來的,用資料型別定義乙個變數 3.類內的變數稱為成員變數 成員屬性 類內函式稱為成員函式 成員方法 class m 定義了個類 intmain 封裝是把變數和函式放到類內。然後給...

C 類和物件(概念 this指標)

比如 世界上有很多人,但是 人 這個詞是一開始就存在的嗎。並不是,我們把 人 叫做 人 那麼老外可能就會叫做 person 或者 people 那麼我們就可以說 人 就是一種抽象,就是類 而我們每乙個人就相當於是 人 這個類的乙個個實體。2.class的定義 1 類的內容有哪些?類內成員都有什麼呢?...