建構函式一律都是公有成員。系統在構造物件的時候會呼叫建構函式的,如果是私有成員的話,就無權訪問了。如果將建構函式寫在private關鍵字後面,那麼編譯時會報錯的。建構函式 ,是一種特殊的方法。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。特別的一個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。C++語言為類提供的建構函式可自動完成物件的初始化任務,全域性物件和靜態物件的建構函式在main()函式執行之前就被呼叫,區域性靜態物件的建構函式是當程式第一次執行到相應語句時才被呼叫。然而給出一個外部物件的引用性宣告時,並不呼叫相應的建構函式,因為這個外部物件只是引用在其他地方宣告的物件,並沒有真正地建立一個物件。如果一個類中沒有定義任何的建構函式,那麼編譯器只有在以下三種情況,才會提供預設的建構函式:
1、如果類有虛擬成員函式或者虛擬繼承父類(即有虛擬基類)時;
2、如果類的基類有建構函式(可以是使用者定義的建構函式,或編譯器提供的預設建構函式);
3、在類中的所有非靜態的物件資料成員,它們對應的類中有建構函式(可以是使用者定義的建構函式,或編譯器提供的預設建構函式)。
建構函式一律都是公有成員。系統在構造物件的時候會呼叫建構函式的,如果是私有成員的話,就無權訪問了。如果將建構函式寫在private關鍵字後面,那麼編譯時會報錯的。建構函式 ,是一種特殊的方法。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。特別的一個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。C++語言為類提供的建構函式可自動完成物件的初始化任務,全域性物件和靜態物件的建構函式在main()函式執行之前就被呼叫,區域性靜態物件的建構函式是當程式第一次執行到相應語句時才被呼叫。然而給出一個外部物件的引用性宣告時,並不呼叫相應的建構函式,因為這個外部物件只是引用在其他地方宣告的物件,並沒有真正地建立一個物件。如果一個類中沒有定義任何的建構函式,那麼編譯器只有在以下三種情況,才會提供預設的建構函式:
1、如果類有虛擬成員函式或者虛擬繼承父類(即有虛擬基類)時;
2、如果類的基類有建構函式(可以是使用者定義的建構函式,或編譯器提供的預設建構函式);
3、在類中的所有非靜態的物件資料成員,它們對應的類中有建構函式(可以是使用者定義的建構函式,或編譯器提供的預設建構函式)。