檢討
第一周的筆記過(guò)于簡(jiǎn)陋,格式也很混亂.本周學(xué)習(xí)筆記將認(rèn)真整理本周所學(xué)習(xí)的內(nèi)容,列出自己的收獲以及一些仍不清楚的問(wèn)題.
本周學(xué)習(xí)內(nèi)容回顧
classes的經(jīng)典分類
class分為兩類:
1.不帶有指針的類
2.帶有一個(gè)或多個(gè)指針作為成員的類
Big Three
即某個(gè)類的?
拷貝構(gòu)造函數(shù)
賦值運(yùn)算符重載函數(shù)
析構(gòu)函數(shù)
在 C++ Primer第十四章也將這三者稱為?復(fù)制控制單元
自定義拷貝構(gòu)造函數(shù)(和copy =)的意義所在
主要針對(duì)的是帶有一個(gè)或多個(gè)指針成員的類
因?yàn)榫幾g器默認(rèn)合成出的拷貝構(gòu)造函數(shù)是bit by bit的進(jìn)行復(fù)制
只會(huì)把指針拷貝過(guò)來(lái)而不會(huì)把指針指向的內(nèi)容進(jìn)行拷貝
拷貝后副本類的成員的指針仍指向之前那個(gè)指針?biāo)赶虻膬?nèi)容
如果不自定義拷貝函數(shù)會(huì)形成未定義操作 造成內(nèi)存泄漏
new和delete的分析
對(duì)于 new操作符
分配內(nèi)存空間
轉(zhuǎn)型
調(diào)用構(gòu)造函數(shù)
?對(duì)于delete操作符
先調(diào)用析構(gòu)函數(shù)
釋放內(nèi)存空間
self assignment檢測(cè)的必要性
如果進(jìn)行自我賦值
第一步會(huì)先調(diào)用析構(gòu)把自身指針對(duì)象所指向的內(nèi)容殺掉
第二步分配內(nèi)存空間
第三步再想把該指針指向內(nèi)容賦值時(shí)由于該內(nèi)容已經(jīng)在第一步中被殺掉,因此會(huì)造成類似越界讀效果的操作
array new 和 array delete的一一對(duì)應(yīng)?
在構(gòu)造函數(shù)中如果使用的是 new []
則在析構(gòu)函數(shù)中需要調(diào)用 delete[] 否則會(huì)造成析構(gòu)函數(shù)調(diào)用錯(cuò)誤
使一部分內(nèi)存不能夠正確的歸還
堆區(qū)\棧區(qū)的簡(jiǎn)要了解
在函數(shù)本體內(nèi)聲明的變量,其所使用的內(nèi)存塊取自于此函數(shù)作用域所有的"棧"
"堆"是系統(tǒng)提供的一塊自由存儲(chǔ)區(qū),程序通過(guò)動(dòng)態(tài)分配得到該區(qū)域中的部分內(nèi)存空間
不同類型objects的生命期
stack object
也叫auto object 由于其在函數(shù)對(duì)應(yīng)作用域的棧區(qū),當(dāng)函數(shù)作用域結(jié)束時(shí),這個(gè)對(duì)象會(huì)被自動(dòng)清理
static object 和 global object
static object的生命期在函數(shù)作用域聲明處開始,直到整個(gè)程序結(jié)束終止
global object的生命期隨程序開始而開始,也跟著程序的結(jié)束而終止
heap object
堆區(qū)的對(duì)象生命期從new這個(gè)對(duì)象開始到delete這個(gè)對(duì)象之時(shí)結(jié)束
在visual c++中動(dòng)態(tài)分配所得的內(nèi)存塊
release版本和debug版本所得到的內(nèi)存塊大小不一樣
每個(gè)分配出來(lái)的內(nèi)存塊前后帶有cookie
分配所得的內(nèi)存字節(jié)大小必定為16的倍數(shù),若不是則進(jìn)行填充
分配數(shù)組型變量時(shí)會(huì)有單獨(dú)的一個(gè)記錄數(shù)組大小的內(nèi)存空間
本周作業(yè)過(guò)程中犯的一些問(wèn)題
對(duì)于基類的成員進(jìn)行了直接的調(diào)用
對(duì)于基類沒(méi)有正確的構(gòu)造
對(duì)于函數(shù)復(fù)制控制單元的性能沒(méi)有合理的檢測(cè)機(jī)制
一些相關(guān)的思考
擴(kuò)展內(nèi)容中關(guān)于account類的利率設(shè)置
可以直接用某個(gè)對(duì)象直接調(diào)用設(shè)置的函數(shù)
與實(shí)際生活不符
賬戶對(duì)象應(yīng)該具體有特定的一個(gè)級(jí)別屬性
然后根據(jù)該屬性的判定結(jié)果決定是否能夠更改利率
class Template更多用于數(shù)據(jù)類型
是否可以用T代替函數(shù)指針實(shí)現(xiàn)某個(gè)函數(shù)具有一系列功能?