構(gòu)造函數(shù)
1.概念
構(gòu)造函數(shù):一個特殊的成員函數(shù),名字與類名相同,創(chuàng)建類類型對象的時候,由編譯器自動調(diào)用,在對象的生命周期內(nèi)只且調(diào)用一次,以保證每個數(shù)據(jù)成員都有一個合適的初始值。
2.構(gòu)造函數(shù)的特性
函數(shù)名和類名相同;
沒有返回值;
有初始化列表(可以不用);
新對象被創(chuàng)建,由編譯器自動調(diào)用,且在對象的生命周期內(nèi)僅調(diào)用一次;
構(gòu)造函數(shù)可以重載,實參決定了調(diào)用哪個構(gòu)造函數(shù);
如果沒有顯示的調(diào)用時,編譯器會提供一個默認(rèn)的構(gòu)造函數(shù);
無參構(gòu)造函數(shù)和帶有缺省值的構(gòu)造函數(shù)都認(rèn)為是缺省構(gòu)造函數(shù),并且缺省構(gòu)造函數(shù)只能有一個;
構(gòu)造函數(shù)不能用const修飾(因為const修飾類的成員函數(shù)時,該函數(shù)不能修改成員變量,但是構(gòu)造函數(shù)要修改類的成員變量,因此不可以由const修飾)
3.初始化列表
以冒號開始,接著是以逗號分隔的數(shù)據(jù)成員列表,每個數(shù)據(jù)成員后面跟一個放在圓括號中的初始化式。
4.初始化順序
數(shù)據(jù)成員在類中定義的順序就是參數(shù)列表中的初始化順序;
初始化列表僅用于初始化數(shù)據(jù)成員,并不指定這些數(shù)據(jù)成員的初始化順序;
每個成員在初始化列表中只能出現(xiàn)一次;
盡量避免使用成員初始化成員,成員初始化順序最好和成員的定義順序保持一致。
類中包含以下成員必須要放在初始化列表中初始化:
(1)引用數(shù)據(jù)類型
(2)const數(shù)據(jù)類型
(3)類類型成員(該類沒有缺省的構(gòu)造函數(shù))
5.默認(rèn)構(gòu)造函數(shù)
默認(rèn)構(gòu)造函數(shù)使用與成員變量初始化相同的規(guī)則初始化成員,對于內(nèi)置類型和復(fù)合類型的成員,如組、指針,只對定義在全局定義作用于的對象初始化,對于局部作用域的內(nèi)置和復(fù)合類型不作初始化。
6.構(gòu)造函數(shù)的作用
構(gòu)建對象
初始化對象
類型轉(zhuǎn)換
7.explcit
用explicit修飾構(gòu)造函數(shù),抑制由構(gòu)造函數(shù)定義的隱式轉(zhuǎn)換,explicit關(guān)鍵字類內(nèi)部的構(gòu)建聲明上,在類的定義體外部的定義上不再重復(fù)。
-
C++
+關(guān)注
關(guān)注
22文章
2117瀏覽量
74858 -
構(gòu)造函數(shù)
+關(guān)注
關(guān)注
0文章
5瀏覽量
2805
發(fā)布評論請先 登錄
請問STM32 C++類構(gòu)造函數(shù)怎么修改才能實現(xiàn)全局變量的初始化呢?
C++課程資料詳細(xì)資料合集包括了:面向?qū)ο蟪绦蛟O(shè)計與C++,算法,函數(shù)等

如何深度解析C++拷貝構(gòu)造函數(shù)詳細(xì)資料說明

如何在中斷C函數(shù)中調(diào)用C++

Linux共享庫的構(gòu)造函數(shù)和析構(gòu)函數(shù)

C++:詳談拷貝構(gòu)造函數(shù)

C++之拷貝構(gòu)造函數(shù)的淺copy及深copy
c++中構(gòu)造函數(shù)學(xué)習(xí)的總結(jié)(一)
EE-128:C++中的DSP:從C++調(diào)用匯編類成員函數(shù)

深度解析C++中的虛函數(shù)

評論