這一次課的重點克锣,是講解了C++四大函數(shù):構(gòu)造函數(shù)茵肃,析構(gòu)函數(shù),以及拷貝構(gòu)造函數(shù)和拷貝賦值函數(shù)袭祟⊙椴校基本知識點,我想不用再贅述了巾乳,我是想補充幾點關(guān)于這四大函數(shù)的注意事項您没,因為在視頻中侯老師沒有講到。
1胆绊、直接初始化與拷貝初始化的區(qū)別
例如 string dots(10,'.');//直接初始化
string s(dots);//直接初始化
string s2 = dots//拷貝初始化
當(dāng)使用直接初始化時氨鹏,我們實際上是要求編譯器使用普通的函數(shù)匹配來選擇與我們提供的參數(shù)最匹配的構(gòu)造函數(shù)。但我們使用拷貝初始化時压状,我們要求編譯器將右側(cè)運算對象拷貝到正在創(chuàng)建的對象中仆抵,甚至可以進行類型轉(zhuǎn)換。
2何缓、什么時候會調(diào)用析構(gòu)函數(shù)
無論何時一個對象被銷毀肢础,就睡調(diào)用其析構(gòu)函數(shù):
1、變量在離開其作用域時被銷毀碌廓。
2传轰、當(dāng)一個對象被銷毀時,其成員被銷毀谷婆。
3慨蛙、容器(無論是標(biāo)準容器還是數(shù)組)被銷毀時辽聊,元素被銷毀。
4期贫、對于動態(tài)分配的對象跟匆,當(dāng)對指向它的指針應(yīng)用delete運算符時被銷毀
5、對于臨時對象通砍,當(dāng)創(chuàng)建它的完整表達式結(jié)束時被銷毀玛臂。
通俗的說,構(gòu)造了多少次封孙,就會析構(gòu)多少次迹冤。結(jié)合著本次作業(yè)可以作更為形象的說明。
運算結(jié)果如下:
清晰地看到構(gòu)造函數(shù)調(diào)用了幾次虎忌,析構(gòu)函數(shù)就調(diào)用了幾次泡徙。