預設建構函式
在不提供任何建構函式的情況下,編譯器給出乙個不帶引數的,不包含**的建構函式。
#include
using
namespace std;
classa;
intmain()
當已經提供了顯式的建構函式,例如:
#include
using
namespace std;
classa}
;int
main()
此時編譯就會出錯,因為編譯器認為已經提供了顯式的建構函式就不會再提供預設建構函式了。這時需要新增乙個無參建構函式,使得上述**能夠正確編譯。
#include
using
namespace std;
classaa
(int n)};
intmain()
關於無參建構函式
每乙個類中都會有乙個建構函式 這個建構函式可以不寫,系統會自動的預設構造乙個 當函式需要引數時,可以自行編寫乙個有參建構函式 但是如果此時你不再寫乙個無參的建構函式,當需要用new 來初始化物件時,編譯器就會報錯,因為找不到這個無參建構函式 因為此時程式中已經有乙個你早就編寫好的有參建構函式,系統便...
C 有參建構函式和無參建構函式的實現
建構函式是乙個特殊的成員函式,名字和類名相同,建立類型別物件時由編譯器自動呼叫,雖然建構函式名稱叫做構造,但是它的主要任務是初始化物件,而不是開空間建立物件,在物件的生命週期內只呼叫一次。如果使用者沒有編寫建構函式,則編譯器和自動提供乙個無引數的建構函式,這個函式就叫預設建構函式。建構函式其特徵如下...
C 的預設建構函式有無參構造和拷貝構造
c 的預設建構函式有無參構造和拷貝構造 一直沒有注意到這個預設的拷貝構造,因為用得少,但是拷貝構造卻是乙個重要的建構函式。下面給出三個類 無任何顯式建構函式 class a 只有乙個顯式的無參建構函式 classb 只有乙個顯式的拷貝建構函式 classc 這個是主函式 int main 為了安全起...