1. 程式人生 > >構造函數的調用規則

構造函數的調用規則

賦值 如果 包括 class c++編譯器 拷貝構造函數 初始化 gpo 構造函數的調用

1.當類中沒有定義任何一個構造函數(包括拷貝構造函數)時,c++編譯器會提供一個默認的無參構造函數和默認拷貝構造函數;

2.當類中定義了拷貝構造函數時,c++編譯器不會提供默認的無參構造函數;(拷貝構造函數也是構造函數,它的函數名和默認的無參構造函數是同名的,這時候你必須得自己寫一個構造函數來初始化對象)

3.當類中定義了任意的非拷貝構造函數(即有參構造函數或無參構造函數),c++編譯器不會提供默認的無參構造函數;

4.默認拷貝構造函數對成員變量簡單賦值;

結論:1.在定義類時,只要你在類裏面寫了構造函數(包括拷貝構造函數),c++編譯器就不會再給你提供默認的無參構造函數了,你必須用自己寫的構造函數去初始化對象;

2.在定義類時,如果你沒寫拷貝構造函數,c++編譯器能給你提供一個默認的拷貝構造函數。

構造函數的調用規則