構造函數
1.概念
構造函數:一個特殊的成員函數,名字與類名相同,創建類類型對象的時候,由編譯器自動調用,在對象的生命周期內只且調用一次,以保證每個數據成員都有一個合適的初始值。
2.構造函數的特性
函數名和類名相同;
沒有返回值;
有初始化列表(可以不用);
新對象被創建,由編譯器自動調用,且在對象的生命周期內僅調用一次;
構造函數可以重載,實參決定了調用哪個構造函數;
如果沒有顯示的調用時,編譯器會提供一個默認的構造函數;
無參構造函數和帶有缺省值的構造函數都認為是缺省構造函數,并且缺省構造函數只能有一個;
構造函數不能用const修飾(因為const修飾類的成員函數時,該函數不能修改成員變量,但是構造函數要修改類的成員變量,因此不可以由const修飾)
3.初始化列表
以冒號開始,接著是以逗號分隔的數據成員列表,每個數據成員后面跟一個放在圓括號中的初始化式。
4.初始化順序
數據成員在類中定義的順序就是參數列表中的初始化順序;
初始化列表僅用于初始化數據成員,并不指定這些數據成員的初始化順序;
每個成員在初始化列表中只能出現一次;
盡量避免使用成員初始化成員,成員初始化順序最好和成員的定義順序保持一致。
類中包含以下成員必須要放在初始化列表中初始化:
(1)引用數據類型
(2)const數據類型
(3)類類型成員(該類沒有缺省的構造函數)
5.默認構造函數
默認構造函數使用與成員變量初始化相同的規則初始化成員,對于內置類型和復合類型的成員,如組、指針,只對定義在全局定義作用于的對象初始化,對于局部作用域的內置和復合類型不作初始化。
6.構造函數的作用
構建對象
初始化對象
類型轉換
7.explcit
用explicit修飾構造函數,抑制由構造函數定義的隱式轉換,explicit關鍵字類內部的構建聲明上,在類的定義體外部的定義上不再重復。
-
C++
+關注
關注
22文章
2114瀏覽量
73791 -
構造函數
+關注
關注
0文章
5瀏覽量
2748
發布評論請先 登錄
相關推薦
評論