類和物件的一些基礎:
類是對乙個事物的描述,可以看做成乙個型別(int.char等),他並沒有分配空間。
物件是類定義出來的乙個實物。
類的成員訪問限定符:public(公有),private(私有)。 私有只可以類內訪問。公有內外都可以訪問。
類外定義(私有的不可以定義)成員函式需要加作用域訪問符;
靜態變數需要類內宣告,類外定義;
注意:靜態的成員函式沒有隱含的this指標引數,所以可以使用型別::作用訪問直接呼叫。
#includeusing namespace std;
class student
;void student::set(char*name, int age)//類外定義成員函式
int student::j;//類外定義靜態成員變數
int main()
類的大小是
所有成員變數大小之和。遵循記憶體對齊規則。
記憶體對齊規則如圖:
位段:
位段:
class aa
{};class a
};class aaa
void print1() };
class aaaa
int a;
};
他們的大小分別是1、1、1、4.
因為沒有成員變數的時候,系統會分配乙個位元組大小進行佔位。表示存在。
接下來總結類的
六大成員函式:
建構函式、拷貝建構函式、析構函式、賦值操作符過載、取位址操作符過載、const修飾的取位址操作符過載。
1.建構函式
需要對私有成員變數進行初始化,完成這項工作的就是建構函式,建構函式在定義物件的時候自行執行一次。
1>函式名與類名相同。
2>
無返回值。
3>類定義物件時系統自行呼叫。
4>建構函式可以過載。
5>建構函式可在類內外定義。
6>沒有定義建構函式系統會給乙個預設的建構函式 (不確定性,有時候什麼事情都不做),但只要定義了,就不會生成預設的。
7>無參的和全預設的建構函式都認為是預設建構函式,並且預設的建構函式只能有乙個。
2.拷貝建構函式
1>拷貝構造是構造的過載。
2>拷貝構造引數必須
引用傳參,否則會遞迴無限迴圈。
3 >若是未定義,系統會預設預設的。(淺拷貝)
3.析構函式
1>析構函式名稱為在類名前面加~;
2>析構函式無引數無返回值。
3 >乙個類只有乙個析構函式,未定義會生成預設的析構函式。(預設的建構函式)
4>類的生命週期結束時會自動呼叫析構函式,先定義先析構,後定義後析構。
5>析構函式是做清理工作(即釋放建構函式所開闢的空間)
4.賦值運算子過載
作用:c++支援運算子過載,為了增強**的可讀性。
特徵:
1>(返回型別) operator + 合法的運算子 構成函式名稱 (加返回型別是為了支援連續賦值)
2>過載不改變優先順序問題。 不改變操作個數。
3>c++不能過載的五個運算子 ?: \ sizeof \ :: \ . \ .*
4>已經存在的物件。
類和物件(預設成員函式)
建構函式不是開空間建立物件,而是初始化物件,更嚴謹的說是賦初值 特性初始化列表 class date private int year int month int day explicit 析構函式不是完成對物件的銷毀,區域性物件銷毀由編譯器完成,而在物件銷毀時會呼叫析構函式,完成類的一些資源清理工...
類和物件(2) 預設成員函式
在前面我詳細介紹了類和物件的一些基本語法,類和物件 1 在本章部落格中繼續深入討論類的六個預設成員函式。如果乙個類中什麼成員都沒有,簡稱為空類。空類中什麼都沒有嗎?並不是的,任何乙個類在我們不寫的情況下,都會自動生成下面6個預設成員函式。一 建構函式 class date date int year...
C 類與物件之預設成員函式
所有類建立物件時會自動生成六個預設函式。但有時候預設函式不能滿足需求,可以自己建立對應函式,來代替預設函式。初始化和清理 建構函式 析構函式 拷貝複製 賦值過載函式 拷貝建構函式 const物件取位址過載class date date private int year int mouth int d...