GeekBand C++面向?qū)ο蟾呒?jí)編程(上) 第二周學(xué)習(xí)筆記

檢討

第一周的筆記過(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ù)具有一系列功能?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容