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.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型別的