初始化與賦值是一個(gè)概念嗎 在構(gòu)造函數(shù)中使用初始化列表?
在構(gòu)造函數(shù)中使用初始化列表?對(duì)于內(nèi)置類(lèi)型的成員,初始化和賦值沒(méi)有太大區(qū)別,就像任何構(gòu)造函數(shù)一樣。但有時(shí)必須使用帶有初始化列表的構(gòu)造函數(shù):(1)成員類(lèi)型是沒(méi)有默認(rèn)構(gòu)造函數(shù)的類(lèi)。如果未提供顯式初始化,編譯
在構(gòu)造函數(shù)中使用初始化列表?
對(duì)于內(nèi)置類(lèi)型的成員,初始化和賦值沒(méi)有太大區(qū)別,就像任何構(gòu)造函數(shù)一樣。但有時(shí)必須使用帶有初始化列表的構(gòu)造函數(shù):(1)成員類(lèi)型是沒(méi)有默認(rèn)構(gòu)造函數(shù)的類(lèi)。如果未提供顯式初始化,編譯器將隱式使用成員類(lèi)型的默認(rèn)構(gòu)造函數(shù)。如果類(lèi)沒(méi)有默認(rèn)構(gòu)造函數(shù),編譯器將無(wú)法嘗試使用默認(rèn)構(gòu)造函數(shù)。(2) 常量成員或引用類(lèi)型的成員。因?yàn)槌A繉?duì)象或引用類(lèi)型只能初始化,所以不能為它們賦值。賦值的數(shù)量和效率也有所不同:初始化對(duì)象時(shí),初始化參數(shù)列表直接在構(gòu)造函數(shù)中為成員變量賦值一次,并為成員變量賦值兩次。一個(gè)是對(duì)象構(gòu)造,它使用默認(rèn)值賦值,第二個(gè)是調(diào)用構(gòu)造函數(shù)賦值。顯然,使用構(gòu)造函數(shù)初始化列表可以獲得更高的效率
初始化列表用于初始化:(1)此類(lèi)的普通成員(2)此類(lèi)的對(duì)象成員(3)基類(lèi)的成員(通過(guò)調(diào)用基類(lèi)構(gòu)造函數(shù)實(shí)現(xiàn))