1. 程式人生 > 實用技巧 >C++類的封裝

C++類的封裝

c++類的封裝

概述

c++面向物件的三大特性為:封裝繼承多型
本篇博文講述的是封裝
c++認為,萬事萬物皆物件,物件就有屬性行為
例如
人就是一個物件,人的屬性有年齡,身高,外貌等,人的行為有走路,說話等。
具有相同性質的物件,可以抽象為類。人屬於人類。

1.封裝

封裝是c++面向物件的三大特性之一

1.1封裝的意義

1.將屬性和行為結合在一起,表示事物
2.將屬性和行為加以許可權控制

1.2宣告一個類

宣告一個類的形式為:
class 型別名
{
類體

};
型別名最好大寫

1.3類體三要素

1.許可權
2.屬性(成員屬性)
3.行為(成員函式)
類體中的屬性和行為都統稱為成員

2.屬性和行為

類的屬性就是定義各種型別的變數
在這裡插入圖片描述
類的行為就是定義或宣告各種型別的函式
在這裡插入圖片描述
類中的任意一個行為都可以對屬性進行操作,也就是說一個類中的函式可以任意呼叫該類中的所有變數。

3.訪問許可權

3.1種類

類的訪問許可權共有三種
1.公共許可權 :public (類內和類外都能夠訪問)
2.保護許可權 :protected (只有類內可以訪問)

3.私有許可權 :private (只有類內可以訪問)

3.2保護與私有的區別

這涉及到繼承的概念
保護:兒子可以訪問
私有:兒子不可以訪問

4.成員屬性私有化

定義成員屬性為私有化是非常有必要的,結果就是類外不可以直接訪問類內的成員屬性。
但是可以間接地訪問,而間接訪問是對類的成員屬性最好的保護,間接訪問的方式是:通過public成員函式進而對類內的成員屬性進行訪問。既然是先訪問成員函式,再訪問成員屬性,那麼我們就可以在成員函式中對傳進來的引數進行預處理
所以成員屬性私有化的兩大優點就出現了
1.將所有成員屬性設為私有,可以控制成員屬性的讀寫操作
2.對於寫許可權,可以檢測傳入的資料的有效性

成員函式形參的格式

在c語言中,是不可以直接給函式傳值,因為函式存在副本機制,a函式想要通過一個b函式對a函式的變數進行修改,只能傳遞指標。而引用的出現解決了大家對指標的討厭。
在這,引用不講,如果對引用有點生疏,可以參考這篇博文。

c++引用的本質
在成員函式中,我們並不想對傳入的資料有更改,我們只是想對資料進行引用,如果成員函式的函式體太大,邏輯很複雜的話,我們就很有可能對傳入的資料進行操作,因此,為了避免這個問題,在宣告形參的時候,加上const。
一般格式:型別名 const &變數名;

5.class和struct的區別

5.1c和c++中struct的區別

在c語言中,struct中的成員能是變數或是陣列或是結構體等,但不可以有函式定義或宣告
但在c++中,struct中的成員可以是函式定義或宣告。

5.2class和struct的區別

class中成員預設為privated型別的
struct中成員預設為public型別的