C 類和物件及其預設成員函式

2021-08-09 15:51:18 字數 1882 閱讀 1114

類和物件的一些基礎:

類是對乙個事物的描述,可以看做成乙個型別(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...