在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.宣告放...