類的六個預設函式及運算子的過載

2021-07-27 16:56:24 字數 2477 閱讀 5669

c++中類的六個預設成員函式 :建構函式, 拷貝建構函式,  析構函式, 賦值操作符過載,取位址操作符過載,const修飾的取位址操作符過載。

下面介紹的是類的六個預設成員函式:

一,建構函式:

1,定義:對成員變數進行初始化,有且僅在定義物件時自動執行一次的成員函式。

2,特徵:      a,函式名與類名相同;

b,無返回值;

c,物件例項化時,系統自動呼叫相應的建構函式;

d,建構函式可以過載; 

e,可在類中定義,也可在類外定義(::);

f,如果類定義中未給出建構函式,則編譯器自動產生乙個預設的建構函式,反之則不生成;

g,無參建構函式和全預設函式都認為是預設建構函式,並且預設建構函式只能有乙個。

3,成員變數的初始化:  a,初始化列表(更高效);

b,函式類賦值。

4,必須放在初始化列表裡的成員變數:           a,常量成員變數(常量建立時必須初始化)

b,引用型別成員變數(引用建立時必須初始化)

c,沒有預設建構函式的類成員變數。

注:若預設引數宣告與定義分離,則可以在宣告或定義中給預設引數。

二,拷貝建構函式

1,定義:建立物件時使用同類物件來進行初始化。

2,特徵:a,本質是乙個建構函式的過載;

b,引數必須使用引用傳參;(使用值傳參會引起無窮遞迴呼叫)

c,若未顯示定義,系統會預設預設的拷貝建構函式,預設的拷貝建構函式會依次拷貝類成員進行初始化。

三,析構函式

1,定義:當乙個物件的生命週期結束時,c++編譯系統會自動呼叫成員函式析構函式。

2,特徵:      a,函式名是類名前加上字元~;

b,無參無返回值;

c,乙個類有且只有乙個析構函式;

d,物件生命週期結束時,c++編譯系統自動呼叫;

e,並不是刪除物件,而是做一些清理工作。

四,賦值操作符過載

1,特徵:        a,「operator+合法的運算子」構成函式名;

b,不改變運算子的優先順序等;

2,與拷貝建構函式相比:拷貝建構函式是建立新物件,使用已有物件來初始化新物件;而賦值運算子過載是對乙個已存在的物件進行拷貝賦值。

data d2 = d1;    //呼叫拷貝建構函式

data d3 ;

data d3 = d1; //呼叫賦值操作符過載

:五個不能過載的運算子:.*   sizeof   ::    ?:    .五,取位址操作符過載

class date

};

六,const修飾的取位址操作符過載

class date

};

下面所寫**主要是對以上所述問題的驗證:

#includeusing namespace std;

class plural

~plural() //析構函式

//plural(const plural& d) //拷貝建構函式

// plural(const plural& d) //拷貝建構函式(初始化列表)

:_real(d._real), _imaginary(d._imaginary)

plural& operator= (const plural& d) //賦值操作符過載

return *this;

} plural& operator+ (const plural& d) //加法過載

plural& operator- (const plural& d) //減法過載

plural operator* (const plural& d) //乘法過載

plural operator/ (const plural& d) //除法過載

plural& operator++() //前置++

plural operator++(int) //後置++

運算子過載 類的賦值運算子過載

下面介紹類的賦值運算子 1.c 中物件的記憶體分配方式 在c 中,物件的例項在編譯的時候,就需要為其分配記憶體大小,因此,系統都是在stack上為其分配記憶體的。這一點和c 完全不同!千 萬記住 在c 中,所有類都是reference type,要建立類的實體,必須通過new在heap上為其分配空間...

類和物件及類中的六個預設的函式

一 物件導向的三大特徵 1 封裝 2 繼承 3 多型 二 類和物件的區別 答 類是抽象的,物件是具體的,所以類不占用記憶體,而物件占用記憶體。三 類和struct的區別 1 struct中預設為public 2 類中預設為private 四 生成物件的2步 1 申請記憶體 2 使用建構函式進行初始化...

類的六個預設成員函式

類的六個預設成員函式 1.建構函式 2.拷貝建構函式 3.析構函式 4.賦值操作符過載 5.取位址操作符過載 6.const修飾的取位址操作符過載 建構函式 是乙個特殊的成員函式,名字與類名相同,建立類型別物件時,由編譯器自動呼叫,在物件的生命週期內隻且只呼叫一次,以保證每個資料成員都有乙個合適的初...