C (十三)物件陣列與建構函式

2021-10-03 06:04:26 字數 1296 閱讀 8824

物件陣列中的元素同樣需要用建構函式初始化。具體哪些元素用哪些建構函式初始化,取決於定義陣列時的寫法。

#include

using

namespace std;

class

csample

csample

(int n)

}int

main()

;//array2 陣列中array3[0]初始化了,array3[1] 無初始化,故分別用建構函式 2 和建構函式 1 進行初始化。

cout<<

"step2"

new csample[2]

;//動態分配了乙個 csample 陣列,這兩個元素無參,都用無參建構函式初始化

delete

array3;

return0;

}======

====

==輸出結果==

====

*****==

constructor 1 called

constructor 1 called

stepl

constructor 2 called

constructor 1 called

step2

constructor 1 called

constructor 1 called

在建構函式有多個引數時,陣列的初始化列表中要顯式包含對建構函式的呼叫

class

ctest

//建構函式(1)

ctest

(int n,

int m)

//建構函式(2)

ctest()

//建構函式(3)};

intmain()

;//三個元素分別用建構函式(1)、(2)、(3) 初始化

ctest* parray[3]

=;//兩個元素指向的物件分別用建構函式(1)、(2)初始化

return0;

}

parray 陣列是乙個指標陣列,其元素不是ctest 類的物件,而是 ctest 類的指標。對 parray[0] 和 parray[1] 進行了初始化,把它們初始化為指向動態分配的 ctest 物件的指標,而這兩個動態分配出來的 ctest 物件又分別是用建構函式(1)和建構函式(2)初始化的。

parray[2] 沒有初始化,其值是隨機的,不知道指向**。故只生成了兩個 ctest 物件,而不是三個,所以也只呼叫了兩次 ctest 類的建構函式。

c 類與物件(1) 構造,複製建構函式

當我們定義乙個基本型別變數時,方法如下 int p 定義乙個int型別變數 bool b 定義乙個bool型別變數 float c 定義乙個float型別變數 顯然定義變數p適用於儲存整數型別的,變數b是用於儲存布林型別的,變數c是用於儲存浮點數型別的。但是變數宣告的意義不只是這個,另乙個同樣重要的...

建構函式與原型物件

1.建構函式中的屬性和方法我們稱為成員,成員可以新增 2.例項成員 建構函式內部通過this新增的成員 uname,age,sing 就是例項成員 例項成員只能通過例項化的物件來訪問 3.靜態成員 在建構函式本身上新增的成員 靜態成員只能通過建構函式來訪問 建構函式的問題 建構函式方法很好用,但是存...

建構函式與原型物件

建構函式本身就是乙個函式,只不過該函式是出於建立新物件的目的而建立的。建構函式與其他函式的唯一區別,就在於呼叫他們的方式不同。任何函式,只要通過new操作符來呼叫,那他就可以作為建構函式 而任何函式,如果不通過new操作符來呼叫,那它跟普通函式也沒有什麼兩樣。當做構造函式呼叫 let person1...