類的六個預設成員函式

2021-08-08 14:46:19 字數 2500 閱讀 2626

類的六個預設成員函式:

1.建構函式

2.拷貝建構函式

3.析構函式

4.賦值操作符過載

5.取位址操作符過載

6.const修飾的取位址操作符過載

建構函式:是乙個特殊的成員函式,名字與類名相同,建立類型別物件時,由編譯器自動呼叫,在物件的生命週期內隻且只呼叫一次,以保證每個資料成員都有乙個合適的初始值。

公有成員函式,僅在定義物件時自動執行一次。

特點:

1.函式名與類名相同。

2.物件構造時自動呼叫。

3.無返回值。

4.可以過載。

5.可以在類內外定義。

6.如果無建構函式,編譯器自動產生乙個預設的建構函式。

7.無參和全預設值的建構函式都認為是預設建構函式,並且預設建構函式之能有乙個。

如下例:

class

cdate

cdate(int

year,int

month,int

day)

private:

int _year;

int _month;

int _day;

}

初始化列表:以乙個冒號開始,接著是乙個以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在圓括號中的初始化式。

類中包含以下成員必須要放在初始化列表中初始化:

1.引用資料成員

2.const資料成員

3.類型別成員

初始化舉例:

class

cdate

private:

int _year;

int _month;

int _day;

}

拷貝建構函式:只有單個形參,而且該形參是對本類型別物件的引用(常用const修飾的)。

舉例作用:建立物件時使用同類物件來進行初始化。 cdate(const cdate&date)

特點:

1.是建構函式的乙個過載。

2.必須使用引用傳參,傳值會無窮遞迴呼叫。

3.未定義時,編譯器會自動生成乙個預設預設拷貝建構函式,預設的拷貝建構函式會依次拷貝類成員進行初始化。 如下:

class

cdate

cdate(int

year,int

month,int

day)

cdate(const

cdate&date)

private:

int _year;

int _month;

int _day;

};

析構函式~date()

作用:在物件宣告週期結束時,呼叫的函式。(清除類本身分配的資源);

特點:

1.函式名在類名前加上~;

2.無引數無返回值;

3.乙個類只能有乙個析構函式,若未定義,系統預設生成析構函式;

4.自動呼叫;

5.析構函式並非刪除物件,而是做一些清理工作(釋放空間);

class array()

~array()//析構函式 清理工作

_size=0;

_capacity=0;

}private:

int *_ptr;

size_t _size;

size_t _capaticy;

}

class

date

date& operator=(const

date& d)

return *this;

}

若定義了友元函式時:友元函式可以訪問類的私有成員。

友元函式: friend

1.友元函式可以直接訪問類的私有成員,是定義在類外的函式。

2.友元函式不屬於類的成員函式,但需要在類內宣告(可以在類內的任何地方宣告,所以友元函式不受訪問限定符的限制),宣告時要加上關鍵字friend。

友元類:

整個類都可以是另乙個類的友元函式,都可訪問另乙個類中的成員。

class time

;class date

;

友元關係是單向的,不具有交換性。

友元關係無法傳遞。

友元關係無法繼承。

取位址操作符過載: date * operator&();

類的靜態成員

1.static修飾的成員,稱為靜態類成員。

2.類的靜態成員被該型別的所有物件所共享。

3.靜態成員函式不會生成this指標,所以可以使用型別::作用域訪問符呼叫靜態成員函式。

類的六個預設成員函式

如果乙個類中什麼成員都沒有,則就是空類。但是空類中什麼都沒有嗎?其實並不是這樣的,任何類在我們不寫的情況下,都會自動生成下面六個預設成員函式。class date 無參的建構函式 date int year,int month,int day 有參的建構函式 這兩個建構函式構成了函式的過載,因為它們...

類的六個預設成員函式總結(一)

類有六個預設成員函式 今天我們來看一下前三個 一 建構函式 什麼是建構函式呢?看下圖 如圖 建構函式的特性有 1.函式名與類名相同 2.沒有返回值 3.有初始化列表 可以不用 4.新物件被建立,由編譯器自動呼叫,且在物件的生命週期內僅呼叫一次 5.建構函式可以過載,實參決定了呼叫哪個建構函式 6.如...

C 之類的六個預設成員函式

在c 類中同樣的預設成員函式一共有六個,即使使用者不定義,編譯器也可以給出。分別為 1 建構函式 2 析構函式 3 拷貝建構函式 4 賦值運算 5 取位址運算 6 const取位址運算 我們一下述程式為例驗證下上面說法 include using namespace std class comple...