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