27)構造和析構函式

2022-04-02 13:43:09 字數 699 閱讀 1905

1)為啥有建構函式:  在涉及多執行緒的**中,比如你現在例項化乙個類,那麼 然後緊接著你去 初始化這個物件的某些值,

但是,一旦你的類例項化完了,在你的初始化某些變數這個之間,可能會有別的執行緒改變了這個物件,那麼你在改這個物件的某些變數可能達不到你想要的結果

所以  為了防止  我再例項化類之後,初始化某些變數,這個之間發生問題,我乾脆就只要例項化物件,我就也順帶做一些初始化工作,這個就是   建構函式的作用(其實就是資料庫的那個加鎖的作用)

建構函式一般是  public   因為你例項化類,就得呼叫這個函式

1

class類名7

8910 }

2)建構函式沒有返回值,析構函式沒有形參

3)在乙個物件被銷毀時,會自動呼叫析構函式

4)每乙個類,即使你沒有編寫類的構造和析構函式,他也會呼叫無參構造和析構函式(這是系統自帶的預設的無參函式,但那時確實存在這兩個函式

5)一旦你提供了乙個顯式的建構函式和析構函式,那個預設的就不存在了,你再呼叫那個系統預設的,就會報錯。

6)當沒有任何顯式的構造和析構時,才會呼叫預設的析構或者建構函式,

7)當沒有任何顯式的拷貝建構函式時,才會呼叫預設的拷貝建構函式

8)析構的順序

1)和構造相反,誰先構造的,誰後析構

建構函式和析構函式

建構函式沒有返回值,不能被顯示的呼叫。它是在定義物件時由系統自動執行的,而且只執行一次。如果沒有定義建構函式,系統會自動生成乙個建構函式,只是這個建構函式的函式體是空,沒有引數,也不執行任何初始化的操作。帶引數的建構函式 有一種簡練,方便的寫法 建構函式的引數初始化表 box int h,int w...

析構函式和建構函式

每個物件生成的時候都要完成物件的初始化,如設定屬性的初始值。c 中規定每個類都有乙個初始值,如果沒有,系統會產生乙個預設的建構函式。這個建構函式沒有任何引數,不做任何額外的工作。但往往我們會自己寫乙個建構函式,用來進行特殊的初始化工作。這樣的話,編譯器就不會再為其生成預設的建構函式。class 類名...

建構函式和析構函式

stock hot 因為資料部分的訪問狀態是私有的,程式不能訪問資料成員。建立stock的建構函式,由於需要為stock提供3個值,因此應為建構函式提供3個引數值,程式設計師可能指向設定company成員,而其他的設定為0 使用預設引數完成 宣告如下 stock const char co,int ...