C 初識類和物件

2021-10-24 12:52:10 字數 1532 閱讀 8903

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

例如:

struct student

};

這樣的結構體,在c++中常用class來代替。即類。

類的定義:

class classname

例:

在定義類的時候,一般將成員函式的定義和類定義分開,跨檔案定義。即類外定義成員函式,類裡只進行宣告。

例:上述例子的類外定義成員函式

類的訪問限定符:

public(公有)

private(私有)

protected(保護)

使用說明:

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

類的例項化:用類型別建立物件的過程,稱為類的例項化

定義出來的類,並沒有分配實際的記憶體空間

例項化出的物件,占用實際的物理空間,儲存類成員變數

類物件的儲存方式:

每個物件都有各自有成員函式

缺點: 每乙個物件中都會儲存相同的**,會造成空間浪費。『

每個物件有著相同的成員函式

成員函式放在公共的**段。

優點:節省空間。

實際上,編譯器採用了第二種儲存方式。但是,乙個物件在實際情況中,只儲存了成員變數

例:

類中,考慮了記憶體對齊的問題。故上述輸出為32。

而類的成員函式儲存在了**段。

計算類的大小:只計算成員變數的大小。(考慮記憶體對齊)

特殊情況:空類 | 無成員變數(只有方法),占有乙個位元組。

在大多數主流編譯器中,為什麼要給空類1個位元組,而不是0呢?

為了區分 類 定義出的不同物件。 例:

C 初識 類和物件(2)

在之前的文章裡,我們出初步了解了,什麼是類,類如何定義,類的大小怎麼計算等 乙個空類裡面什麼也沒有,但是它並非是什麼也沒有,只要是類,它就有6個預設的成員函式 1.建構函式 2.析構函式 3.拷貝建構函式 4.賦值操作符過載 5.取位址操作符過載 6.const修飾的取位址操作符過載 類的建構函式 ...

C 中的類和物件(一 初識類和物件)

面向過程和物件導向的初步認識 c語言是基於面向過程的,關注的是過程,分析出求解問題的步驟,通過函式呼叫逐步解決問題。c 是基於物件導向的,關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成。class為定義類的關鍵字,person為類的名字,中為類的主體,注意類定義結束時後面的分號。類中...

C 初識類與物件

在c 中,結構體不僅可以定義變數時也可以定義函式。同樣的結構體c 中,將會用class代替struct class student 類的兩中定義方式 1.宣告和定義都在類體中 class student private int age char name 20 char gender 3 2.宣告放...