C 中類的入門

2021-10-04 00:03:05 字數 1710 閱讀 2638

在c++中,具備物件導向的三大特性為:封裝、繼承、多型,也就是說,c++認為萬物皆為物件。

那麼其中最有代表性的就是c++中的類。在c++類中,有三種不同的訪問許可權,公共許可權,保護許可權,私有許可權。

公共許可權 public 類內可以訪問 類外可以訪問

保護許可權 protected 類內可以訪問 類外不可以訪問

私有許可權 private 類內可以訪問 類外不可以訪問

並且在進行類的繼承中,不同情況又有不同的許可權:

當進行公有繼承時,可以訪問基類的public物件,protected物件,而不能訪問private物件。

當進行保護繼承時,可以訪問基類的public物件,protected物件,但是兩者都變成protected許可權,一樣的,無法訪問private物件。

當進行私有繼承時,可以訪問基類的public物件,protected物件,但是兩者都變成private許可權,但是一樣無法訪問private物件。

而與class很像,但又有些許不同的結構體,它們的區別在於,結構體預設許可權為公有,而class中預設許可權為私有。

那麼,我們為什麼要將類中的成員分為這幾種許可權呢?

一是因為將成員屬性設定為私有,我們就可以自己控制讀寫許可權;其次是對於寫許可權,我們可以檢測資料的有效性。

在處理物件的時候,物件的初始化以及銷毀是兩個很重要的問題。如果乙個物件沒有進行初始化或者沒有及時清理,都會造成一定的安全問題。

c++中就利用建構函式以及析構函式解決以上兩個問題。這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。

不過,即使我們自己不編寫建構函式以及析構函式,編譯器自身也會給我們提供。

1.建構函式沒有返回值,也不寫void

2.函式名稱要與類名一致

3.建構函式可以有引數,因此可以發生過載

4.程式在呼叫物件的時候會自動呼叫建構函式,並且只會呼叫一次,因此不需要我們手動呼叫

和建構函式一樣,析構函式沒有返回值也不寫void

函式名稱與類名相同,在名稱前加上符號 ~

但是析構函式不可以有引數,因此不可以發生過載

程式在物件銷毀前會自動呼叫析構,無須手動呼叫,而且只會呼叫一次

class

person

//有參建構函式

person

(int a)

//拷貝建構函式

person

(const person& p)

//析構函式

~person()

public

:int age;

};

初始化列表

當我們需要給建構函式初始化列表的時候,可以根據建構函式():屬性1(值1),屬性2(值2)…來進行初始化列表

class

person

//初始化列表方式初始化

person

(int a,

int b,

int c)

:m_a

(a),

m_b(b)

,m_c

(c)void

printperson()

private

:int m_a;

int m_b;

int m_c;

};

c 入門學習 類

1.類 1.1 類的一些概念 1 c 中類與結構的區別是 類定義中成員預設情況是private,而結構中是public的 2 c 中的結構也可以有成員函式的 3 前面可以沒有類名,表示全域性資料或者全域性函式,在類中呼叫非成員函式要使用 號 前可以有兩種型別的名稱,一種是命名空間的名稱,一種是類的名...

C 類入門3 巢狀類

可以將類b宣告在另乙個類中。在另乙個類a中宣告的類b被稱為巢狀類 nested class 類a的成員函式可以建立和使用巢狀類b的物件。當且僅當宣告為公有部分時,才能在類a的外面使用巢狀類。而且必須使用作用域解析運算子。舊版c 不支援巢狀類概念 對類進行巢狀和包含並不同。包含意味著將類c物件作為類a...

c 類與物件入門

c語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過步驟解決問題 c 物件導向,關注的是物件,將一件事情拆分成不同物件,靠物件之間的互動完成 類的定義 class classname class為定義類的關鍵字,classname為類的名字,中為類的主體,類中的元素為類的成員,類中的資料為類...