類和物件中

2021-09-26 09:23:14 字數 3499 閱讀 4690

主要完成初始化工作,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資料成員都有乙個合適的初始值,並且在物件的生命週期內只呼叫一次

class date

// 2.帶參建構函式

date (int year, int month , int day )

private :

int _year ;

int _month ;

int _day ;

};//沒有定義建構函式,物件也可以建立成功,因此此處呼叫的是編譯器生成的預設建構函式

特性:

<1>函式名與類名相同

<2>無返回值

<3>物件例項化時編譯器自動呼叫對應的建構函式

<4>建構函式可以過載

<5>如果類中沒有顯示定義建構函式,則c++編譯器會自動生成乙個無參的預設建構函式

<6>無參建構函式和全預設的建構函式都稱為預設建構函式,並且預設的構函式只能有乙個。注意:無參建構函式、全預設建構函式、我們沒寫編譯器預設生成的建構函式,都可以認為是預設成員函式

<7>編譯器生成的預設建構函式並沒有什麼卵用??

c++把型別分為內建型別(基本型別)和自定義型別

內建型別就是語法已經定義好的型別:如int/char...

自定義型別就是我們使用class/struct/union自己定義的型別

編譯器生成預設的建構函式會對自定型別成員_t呼叫的它的預設成員函式

析構函式:與建構函式功能相反,析構函式不是完成物件的銷毀,區域性物件銷毀工作是由編譯器完成的。而物件在銷毀時會自動呼叫析構函式,完成類的一些資源清理工作

typedef int datatype;

class seqlist

~seqlist()

}private :

int* _pdata ;

size_t _size;

size_t _capacity;

};

特性:析構函式是特殊的成員函式

<1>析構函式名是在類名前加上字元 ~

<2>無引數無返回值

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

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

<5>編譯器生成的預設析構函式,對會自定型別成員呼叫它的析構函式

只有單個形參,該形參是對本類型別物件的引用(一般常用const修飾),在用已存在的類型別物件建立新的物件時由編譯器自動呼叫

特徵:

<1>拷貝建構函式是建構函式的乙個過載形式

<2>拷貝建構函式的引數只有乙個必須使用引用傳參,使用傳值方式會引發無窮遞迴呼叫

<3>若未顯示定義,系統生成預設的拷貝建構函式,預設的拷貝建構函式物件按記憶體儲存按位元組序完成拷貝,這種拷貝我們叫做淺拷貝,或者值拷貝

class date

private:

int _year;

int _month;

int _day; };

int main()

<4>編譯器生成的預設拷貝建構函式已經可以完成位元組序的值拷貝了,但是還需要我們自己實現深拷貝

a.運算子過載

c++為了增強**的可讀性引入了運算子過載,運算子過載是具有特殊函式名的函式,也具有其返回值類型,函式名字以及引數列表,其返回值型別與引數列表與普通的函式類似

函式名字為:關鍵字operator後面接需要過載的運算子符號

函式原型:返回值型別 operator操作符(引數列表)

不能通過連線其他符號來建立新的操作符:比如operator@

過載操作符必須有乙個類型別或者列舉型別的運算元

用於內建型別的操作符,其含義不能改變,例如:內建的整型+,不 能改變其含義

作為類成員的過載函式時,其形參看起來比運算元數目少1成員函式的

操作符有乙個預設的形參this,限定為第乙個形參

. * 、:: 、sizeof 、?: 、. 注意以上5個運算子不能過載

b.賦值運算子過載

1. 引數型別

2. 返回值

3. 檢測是否自己給自己賦值

4. 返回*this

5. 乙個類如果沒有顯式定義賦值運算子過載,編譯器也會生成乙個,完成物件按位元組序的值拷貝

將const修飾的類成員函式稱之為const成員函式,const修飾類成員函式,實際修飾該成員函式隱含的this指標,表明在該成員函式中不能對類的任何成員進行修改

1. const物件可以呼叫其他const成員函式

2. 非const物件可以呼叫非const成員函式和const成員函式

3. const成員函式內可以呼叫其它的const成員函式

4. 非const成員函式內可以呼叫其他const成員函式和非const成員函式

這兩個預設成員函式一般不用重新定義 ,編譯器缺省會生成

這兩個運算子一般不需要過載,使用編譯器生成的預設取位址的過載即可,只有特殊情況,才需要過載,比如想讓別人獲取到指定的內容

class date

const date* operator&()const

private :

int _year ; 

int _month ; 

int _day ; 

};

oc中類和物件

類與物件的概念 類是對同一類事物高度的抽象,類中定義了這一類物件所應具有的靜態屬性 屬性 和動態屬性 方法 物件是類的乙個例項,是乙個具體的事物。類與物件是抽象與具體的關係。類其實就是一種資料型別,它的變數就是物件。類與類之間的關係 繼承關係 a是b如果這句話說的通,在設計程式的時候就可以看成是繼承...

C 類和物件(中)

一 類的六個預設成員函式 1 初始化和清理。建構函式完成初始化,析構函式完成清理 2 拷貝複製 拷貝建構函式使用同類物件建立物件,賦值過載是把乙個物件賦值給另乙個物件 3 取位址和過載 主要是對普通物件和const物件取位址 二,建構函式 1 建構函式是乙個特殊成員函式,名字和類名相同,建立類型別物...

類和物件(中)筆記

1.c 中struct和class的區別是什麼?答 c 需要相容c語言,所以c 中struct可以當成結構體去使用。另外c 中struct還可以用來定義類,和class是定義類是一樣的。區別是struct的成員預設訪問方式是public,class是struct的成員預設訪問方式 是private。...