C 之建構函式

2021-06-16 18:40:36 字數 1149 閱讀 7714

建構函式的作用是初始化物件的資料成員。

1)  無引數建構函式

如果建立乙個類你沒有寫任何建構函式,則系統會自動生成預設的無參建構函式,函式為空,什麼都不做。只要你寫了某一種建構函式,系統就不會再自動生成這樣乙個預設的建構函式,如果希望有乙個這樣的無參建構函式,則需要自己顯式地寫出來。

2)  一般建構函式

一般建構函式可以有各種引數形式,乙個類可以有多個一般建構函式,形成建構函式過載,建立物件時根據傳入的引數不同呼叫不同的建構函式。

3)  複製建構函式(拷貝建構函式)

複製建構函式為類物件本身的引用,用於根據乙個已存在的物件複製出乙個新的該類的物件。若沒有顯式的寫複製建構函式,則系統會預設建立乙個複製建構函式,但當類中有指標成員時,由系統預設建立該複製建構函式會存在風險,需要考慮 「淺拷貝」 、「深拷貝」的問題。

4)  型別轉換建構函式

根據乙個指定的型別的物件建立乙個本來的物件。

5) 

運算子過載

由於運算子過載與複製建構函式有點像,這裡也順便討論一下,運算子過載是通過建立運算子函式實現的,運算子函式定義了過載的運算子將要進行的操作。函式名是由關鍵字operator和其後要過載的運算子符號構成。

下面通過乙個例子說明建構函式的用法:

宣告:test.h

class a

;

定義:

test.cpp

#include "test.h"

//無引數建構函式

a::a(void)

//一般建構函式

a::a(int i, int j)

//複製建構函式

a::a(const a& other)

//型別轉換建構函式

a::a(int a)

//賦值運算子函式

a& a::operator=(const a &str)

this->value_1 = str.value_1;

this->value_2 = str.value_2;

return *this;

}

測試:

#include "test.h"

void main()

C 建構函式之預設建構函式

參考部落格 以下內容是在上述博主的部落格中提煉出來的 一 預設建構函式的含義是啥 主要就是 預設建構函式在呼叫的時候不需要顯示傳入實參的建構函式 二 預設的建構函式的分類 1 無參建構函式 就是沒有引數的建構函式 class sample 2 帶有形參,並且帶有預設值的建構函式 class samp...

C 建構函式之委託建構函式

委託建構函式 c 11新標準擴充套件了建構函式初始值的功能,使得我們可以定義所謂的委託建構函式。乙個委託建構函式使用它所屬類的其他建構函式執行它自己的初始化過程,或者說它把它自己的一些 或者全部 職責委託給了其他建構函式。和其他建構函式一樣,乙個委託建構函式也有乙個成員初始值的列表和乙個函式體。在委...

C 之建構函式

參考 c 程式設計指南 類是否用 static 來修飾,有兩種,一種是用static修飾,一種則不是。對於前者,如果,類提供了乙個無引數的建構函式,那麼new 例項化物件時候,就會呼叫這個無引數的建構函式 也叫預設建構函式 如果,類提供了乙個有引數的建構函式,但是new時候,依然沒有提供引數,那麼情...