C++中的類與菠菜平臺一條龍
類的定義:
class/struct 類名 //類頭
{數據和方法的定義}; //類體
1、類體中的數據描述的是類的特征(屬性),方法是類中定義的函數,描述類的行為。
2、使用class和struct的唯一區別是:使用class定義的類在沒有被強制限定的話,其成員時私有的,既不能被外部調用。使用struct的話,其成員是公共的,可以被外部調用。
3、類體由花括號包圍形成一個新的作用域。類內部定義的名字必須唯一,但是可以與外部定義的名字重復。
4、C++11新標準規定,可以為數據成員提供一個類內初始值。在創建對象時,類內初始值將用於初始化數據成員,沒有初始值的成員將被默認初始化。但是需要註意:類內初始值要麽放在等號右邊,要麽放在花括號內,記住不能使用圓括號。
5、所有成員的聲明都必須在類的內部,但是成員函數體的定義則既可以在類的內部也可以在類的外部。當定義在類的外部時函數名之前需要加上類名和作用域運算符(::)以顯式的指出該函數是對應類的成員函數。
6、定義在類內部的函數是隱式的inline函數。
7、可以在定義類的同時定義定義對象
class p{int a;int b();}p1,p2;
也可以先定義類,然後再定義對象。這裏需要註意:與C中的結構體等對象的定義不同,C++允許直接使用類名而不需要之前的class或struct限定符,而C中限定符是必不可少的,它甚至是類型名的一部分。
C++: struct p{int a;int b;};
p p1;
C: struct p{int a;int b;};
struct p p1;
8、使用訪問說明符可以加強類的封裝性:
8.1、定義在public說明符之後的成員在整個程序內可被訪問,public定義類的接口。
8.2、定義在private說明符之後的成員可以被類的成員函數訪問,但是不能被使用該類的代碼訪問也不能被派生類訪問,private部分封裝(隱藏)了類的實現細節。
8.3、定義在protected之後的成員被稱為保護成員,該成員只能在該類和該類的派生類(子類)中訪問。
8.3、訪問說明符的優先級是高於使用class和struct的默認訪問屬性的。
8.4、一個類可以包含任意數量的訪問說明符。
9、在定義類的方法(成員函數)時,如果不需要在方法中修改類的數據成員,建議在方法聲明和定義的參數列表後都使用const關鍵字,表示用戶不能再該方法中修改類的數據成員,這樣的成員函數稱為常亮成員函數。常量對象,以及常量對象的引用或指針都只能調用常量成員函數。
記住,這裏的const是個頂層const,也就是說如果類中包含指針成員,此時這個指針就是個常亮指針,不能改變指向,但可以改變所指元素的值。
class p
{
int a(int a,int b) const;
};
int a(int a,int b) const
{
//不能修改類成員的值
}
C++中的類與菠菜平臺一條龍