四個預設成員函式和運算子過載

2021-09-30 14:33:49 字數 1813 閱讀 2844

1.類的定義

在c++中,用「類」描述「物件」,所謂的物件是指現實世界中的一切事物。

類是建立物件的模板,乙個類可以建立多個物件,每個物件都是類的乙個具體例項,擁有類的成員變數和成員函式。

類的組成:資料(成員變數)和程式(成員函式)。

例子:

class

1)建構函式

私有成員變數要對它們進行初始化,必須用乙個公有成員函式進行,同時這個函式應該有且在定義物件時自動執行一次,這是呼叫的函式稱為建構函式。

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

a.函式名與類名相同。

b.無返回值。

c.物件構造時系統自動呼叫對應的建構函式。

d.建構函式可以過載。

e.建構函式可以在類中定義,也可以在類外定義。

f.如果類定義中沒有給出建構函式,則c++編譯器會自動生成乙個省缺的建構函式,但只要我們自己定義了乙個建構函式,則系統就不會自動生成預設的建構函式。

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

定義乙個date類:

date()   //無參建構函式

date(int year,int month,int day)//帶參建構函式

date(int year=1990,int month=2,int day=1)//預設引數的建構函式

2).拷貝建構函式.

建立物件時使用同類物件來進行初始化,這時所用的建構函式稱為拷貝建構函式,拷貝建構函式是特殊的建構函式。

拷貝建構函式的特徵;

a.拷貝建構函式是乙個建構函式的過載,

b.拷貝建構函式的引數必須使用引用傳參,使用傳值方式會引發無窮遞迴呼叫。

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

例子:

date(const

date& d)

date d1;

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

date d3=d1;

3).析構函式。

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

析構函式的特點:

a.析構函式在類名前加上~。

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

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

d.物件生命週期結束時,系統會自動呼叫析構函式。

e.析構函式主要完成清理工作,比如釋放記憶體等工作。

例子:

array(int size)

~array();//析構函式

}

4).賦值操作符過載。

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

bool

operate==(const

date& d)

date

d1,d2;

d1==d2;

5).運算子過載

operate+合法的運算子構成函式名,例如:operate=

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

注:5個c++不能過載的運算子:*/::/sizeof/?:/.

C 四個預設成員函式 運算子過載

1 1 類的定義 在c 中,用 類 描述 物件 所謂的物件是指現實世界中的一切事物。類是建立物件的模板,乙個類可以建立多個物件,每個物件都是類的乙個具體 例項,擁有類的成員變數和成員函式。乙個簡單的類定義 class student 2 訪問限定符 宣告了對類的外部介面,所有來自外部的訪問通過介面進...

四個預設成員函式和過載運算子

1.類和物件的基礎知識 類實際上是對某種型別的物件變數和方法的原型,類是從一些具有相同屬性或功能的具體例項,抽象出共有的一些屬性的,自定義抽象資料型別。public成員可從類外部直接訪問,private protected不能從類外部直接訪問,每個限定符在類體中可以使用多次,類體中如果沒有定義限定符...

類和物件 四個預設成員函式 運算子過載

類的定義 類 class 實際上是某種型別的物件變數和方法的原型.類是從一些具有相同屬性或功能的具體例項中抽象出共有的一些屬性。類是乙個新的資料型別,它和結構體有點相似,是由不同資料型別組成的集合體,但類要比結構體增加了運算元據的行為,這個行為就是函式,還有乙個區別就是類內存在類成員訪問的修飾限定符...