類和對象的基本概念
- C和C++中struct區別
- 類的封裝
- 封裝
- 訪問權限
- 總結
- struct和class的區別
- 將成員變量設置為private
C和C++中struct區別
- C語言struct只有變量
- C++語言struct 既有變量,也有函數
類的封裝
封裝
- 把變量(屬性)和函數(操作)合成一個整體,封裝在一個類中
- 對變量和函數進行訪問控制
訪問權限
- 在類的內部(作用域范圍內),沒有訪問權限之分,所有成員可以相互訪問
- 在類的外部(作用域范圍外),訪問權限才有意義:public,private,protected
- 在類的外部,只有public修飾的成員才能被訪問,在沒有涉及繼承與派生時,
總結
//封裝兩層含義
//1. 屬性和行為合成一個整體
//2. 訪問控制,現實事物本身有些屬性和行為是不對外開放
class Person{
//人具有的行為(函數)
public:void Dese(){ cout << "我有錢,年輕,個子又高,就愛嘚瑟!" << endl;}
//人的屬性(變量)
public:int mTall; //多高,可以讓外人知道
protected:int mMoney; // 有多少錢,只能兒子孫子知道
private:int mAge; //年齡,不想讓外人知道
};int main(){Person p;p.mTall = 220;//p.mMoney 保護成員外部無法訪問//p.mAge 私有成員外部無法訪問p.Dese();return EXIT_SUCCESS;
}
類是一個數據類型,類是抽象的
對象是一個具體的變量,占用內存空間。
struct和class的區別
class默認訪問權限為private,struct默認訪問權限為public
class A{int mAge;
};
struct B{int mAge;
};void test(){A a;B b;//a.mAge; //無法訪問私有成員b.mAge; //可正常外部訪問
}
將成員變量設置為private
- 可賦予客戶端訪問數據的一致性。
- 可細微劃分訪問控制。
class AccessLevels{
public://對只讀屬性進行只讀訪問int getReadOnly(){ return readOnly; }//對讀寫屬性進行讀寫訪問void setReadWrite(int val){ readWrite = val; }int getReadWrite(){ return readWrite; }//對只寫屬性進行只寫訪問void setWriteOnly(int val){ writeOnly = val; }
private:int readOnly; //對外只讀訪問int noAccess; //外部不可訪問int readWrite; //讀寫訪問int writeOnly; //只寫訪問
};