構(gòu)造函數(shù)
1.概念
構(gòu)造函數(shù):一個(gè)特殊的成員函數(shù),名字與類名相同,創(chuàng)建類類型對(duì)象的時(shí)候,由編譯器自動(dòng)調(diào)用,在對(duì)象的生命周期內(nèi)只且調(diào)用一次,以保證每個(gè)數(shù)據(jù)成員都有一個(gè)合適的初始值。
2.構(gòu)造函數(shù)的特性
函數(shù)名和類名相同;
沒有返回值;
有初始化列表(可以不用);
新對(duì)象被創(chuàng)建,由編譯器自動(dòng)調(diào)用,且在對(duì)象的生命周期內(nèi)僅調(diào)用一次;
構(gòu)造函數(shù)可以重載,實(shí)參決定了調(diào)用哪個(gè)構(gòu)造函數(shù);
如果沒有顯示的調(diào)用時(shí),編譯器會(huì)提供一個(gè)默認(rèn)的構(gòu)造函數(shù);
無參構(gòu)造函數(shù)和帶有缺省值的構(gòu)造函數(shù)都認(rèn)為是缺省構(gòu)造函數(shù),并且缺省構(gòu)造函數(shù)只能有一個(gè);
構(gòu)造函數(shù)不能用const修飾(因?yàn)閏onst修飾類的成員函數(shù)時(shí),該函數(shù)不能修改成員變量,但是構(gòu)造函數(shù)要修改類的成員變量,因此不可以由const修飾)
3.初始化列表
以冒號(hào)開始,接著是以逗號(hào)分隔的數(shù)據(jù)成員列表,每個(gè)數(shù)據(jù)成員后面跟一個(gè)放在圓括號(hào)中的初始化式。
4.初始化順序
數(shù)據(jù)成員在類中定義的順序就是參數(shù)列表中的初始化順序;
初始化列表僅用于初始化數(shù)據(jù)成員,并不指定這些數(shù)據(jù)成員的初始化順序;
每個(gè)成員在初始化列表中只能出現(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ī)則初始化成員,對(duì)于內(nèi)置類型和復(fù)合類型的成員,如組、指針,只對(duì)定義在全局定義作用于的對(duì)象初始化,對(duì)于局部作用域的內(nèi)置和復(fù)合類型不作初始化。
6.構(gòu)造函數(shù)的作用
構(gòu)建對(duì)象
初始化對(duì)象
類型轉(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文章
2108瀏覽量
73618 -
構(gòu)造函數(shù)
+關(guān)注
關(guān)注
0文章
5瀏覽量
2734
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論