C 類的預設函式

2021-08-17 17:44:40 字數 2764 閱讀 2692

每個成員函式都有乙個指標形參,它的名字是固定的,稱為this指標,this指標是隱式的。但是建構函式沒有這個隱含的this指標。

編譯器會對成員函式進行處理,在物件呼叫成員函式時,物件位址作實參傳遞給成員函式的第乙個形參this指標。

編譯器會對成員函式進行處理,在物件呼叫成員函式時,物件位址作實參傳遞給成員函式的第乙個形參this指標。

this指標是成員函式隱含指標形參,是編譯器自己處理的,我們不能在成員函式的形參中新增this指標的引數定義,也不能在呼叫時顯示傳遞物件的位址給this指標。但是我們可以在成員函式中使用this指標,比如this->_name;,this是可以寫也可以不寫的。同時this也可以作為返回值。

不寫拷貝建構函式會自動生成,也會起作用。

③析構函式(清理工作)

當乙個物件的生命週期結束時,c++編譯系統會自動呼叫乙個成員函式,這個特殊的成員函式即析構函式(destructor)。

建構函式是特殊的成員函式,其特徵如下:

析構函式在類名加上字元~

析構函式無引數無返回值。

乙個類有且只有乙個析構函式。若未顯示定義,系統會自動生成預設的析構函式。

物件生命週期結束時,c++編譯系統系統自動呼叫析構函式。

注意析構函式體內並不是刪除物件,而是做一些清理工作。

運算子過載特徵:

operator+ 合法的運算子 構成函式名(過載《運算子的函式名:operator< )。

過載運算子以後,不能改變運算子的優先順序/結合性/運算元個數。

拷貝建構函式是建立的物件,使用乙個已有物件來初始化這個準備建立的物件。

賦值運算子的過載是對乙個已存在的物件進行拷貝賦值。

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

date d3 ; d3 = d1 ; // 呼叫賦值運算子的過載

日期類的賦值運算子過載:

date& operator=(const

date& d)

return *this;//*this會生成乙個臨時變數且會呼叫拷貝建構函式。

}//可以用引用返回,也可以無返回值,void,但是會影響連續賦值

常量成員變數。(常量建立時必須初始化)

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

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

成員變數按宣告順序依次初始化,而非初始化列表出現的順序。

⑤取位址操作符過載

date* operator&()
const date* operator&() const
將return this改為return null;

只宣告取位址符的過載,不定義。(會有報錯,直接警告你不可以取位址)

const物件可以呼叫非const成員函式和const成員函式嗎?

非const物件可以呼叫非const成員函式和const成員函式嗎?

const成員函式內可以呼叫其它的const成員函式非const成員函式嗎?

非const成員函式內可以呼叫其它的const成員函式非const成員函式嗎?

#define swap(a,b)
為了防止多次呼叫swap時會多次生成temp變數可以在呼叫時加花括號。

class date ;

ostream & operator

<

// cin.operator<

istream & operator>> ( istream& is , date& d)

void test ()

// 靜態成員函式

static

void printcount() ;

// 定義並初始化靜態成員變數

int date::scount = 0;

void test ()

沒有this指標,不能呼叫show,不能訪問物件。

靜態成員屬於類,也屬於類中所有的物件。

C 類的預設函式

使用者自定義乙個類,簡單的可以看成是乙個新的型別,與c 標準裡面的資料型別使用差不多。但在物件導向程式設計中,我們知道任何乙個物件必須要通過建構函式才能建立,以及可以將乙個物件拷貝給另乙個物件,將乙個物件作為引數傳遞給乙個函式等。c 預設函式 既然是預設函式,那也就是說即便類裡面乙個成員函式沒有,這...

C 類預設函式

在c 中,乙個類有八個預設函式 預設建構函式 預設拷貝建構函式 預設析構函式 預設過載賦值運算子函式 預設過載取址運算子函式 預設過載取址運算子const函式 預設移動建構函式 c 11 預設過載移動賦值操作符函式 c 11 只是宣告乙個空類,不做任何事情的話,編譯器會自動為你生成乙個預設建構函式 ...

C 類預設生產的函式

c 預設生成4個成員函式.預設建構函式 default constructor 析構函式 destructor 複製建構函式 copy constructor 賦值建構函式 assignment c 11新增兩個 move建構函式 右值引用建構函式 move賦值函式 如果滿足位逐次拷貝 bitwis...