1、對象和類概念
對象:實體,真實存在的個體。
編譯器為之分配空間的變量。
特征屬性,行為。
類: 具有共性的實體的抽象。
自定義的數據類型
struct stu
{
int age;
};
struct stu xiaoming;
xiaoming就是對象,struct stu就是類。
2、C++對於結構的增強
struct stu
{
char *name; //數據
int age;
void fun()
{
printf("age\n",age);
}
};
a.結構名可以直接做類型名。
C:struct stu xiaoming;
C++:stu xiaoming;
b.結構中可以定義函數。
c.結構中對於數據和函數有權限的划分。(封裝性)
public(公共的):類內和類外均可以訪問
private(私有的):只能在類內訪問,類外無法訪問。
protected(受保護的):只要不涉及到繼承,和private相同。
補充:
1.struct關鍵字定義的類型中如果成員前沒有權限符修飾,默認為public
2.權限符生效范圍是上個權限符到下個權限符中間的部分。
3.權限符可以出現任意次,但不建議這樣使用。
注意:
1、C++的結構除了上述增強外,其余基本和C中沒有差別,
如:成員訪問方法,對齊原則等均一樣。
2、類的成員函數應當在外部定義,內部給出聲明即可。外部定義時要指定函數的作用域。
C++使用class關鍵字用於定義類,和struct關鍵字的用法相同。只不過class關鍵字默認的類型為private
3、對象的引用
a.同一類的對象可以相互賦值。
當類中有指針且有動態內存分配時,不要隨便賦值,有可能會出現問題。
4.構造函數
構造函數主要用於在定義對象時,完成對象的初始化.
每一個類都應該有一個構造函數,如果用戶沒有定義構造函數,
編譯器會自動生成構造函數(參數和函數體為空的構造函數),如果用戶自定義了構造函數,那么編譯器不再提供默認的構造函數。
特性:
1.構造函數的名稱必須要與當前類的名稱相同。
2.構造函數僅在定義對象時由系統調用,其他時間無法調用。
3.構造函數可以有參數,也可以沒有參數,但是不允許有返回值。
4.構造函數只能定義為公有成員,不能定義為其他。
調用條件:
1.定義對象時。
2.為對象分配動態內存時。
3.定義無名對象(稍作了解)
注意:
構造函數可以進行重載,以便用於不同形式的對象的定義。
構造函數還可以使用默認的缺省參數。如果構造函數既有重載,又有缺省參數時,注意不要產生二義性。
5、const修飾的成員函數
對於一般的成員函數來說,可以訪問和修改任意數據成員的值。
如果不希望某個成員函數修改成員的值可以使用const修飾該函數。
格式:
返回值類型 函數名(參數列表)const
void stu::getnum()const
{
}
如果希望const修飾的成員函數還可以改變某個成員值,可以在該成員前使用mutable修飾。
