感冒了,先這樣交著吧,后面再改
三大函數(shù):拷貝構(gòu)造,拷貝復(fù)制,析構(gòu)
有指針的類設(shè)計(jì):
s1 = s2
帶指針的類進(jìn)行復(fù)制時(shí),需要清空原有分配的內(nèi)存,再設(shè)置新的內(nèi)容。
刪除空間,重新分配空間,重新賦值:
Stack棧,是存在與某種作用于(Scope)的一塊內(nèi)存空間(memoryspace)。例如當(dāng)調(diào)用函數(shù)時(shí),函數(shù)會(huì)形成一個(gè)Stack用來存放所接受的參數(shù),以及返回地址。
這樣寫,Complex的析構(gòu)函數(shù)會(huì)自動(dòng)被調(diào)用起來。
c2是靜態(tài)對(duì)象,其聲明在作用域結(jié)束后仍然存在,直到整個(gè)程序結(jié)束。
c3是全局對(duì)象,生命在整個(gè)程序結(jié)束后才結(jié)束,也可以視為一種static object,其作用域是整個(gè)程序。
Heap堆,是由操作系統(tǒng)提供的一塊global內(nèi)存空間,程序可動(dòng)態(tài)分配(dynamicallocated),從中獲得若干區(qū)塊(blocks)。
調(diào)試模式,new complex時(shí)的內(nèi)存分配,與,發(fā)布模式時(shí)的內(nèi)存分配。
分配的空間都是16的倍數(shù),不足補(bǔ)充pad。
cookie指的是空間大小,最低位為1表示給出去,0表示收回來。
new []與delete[]要成對(duì)使用:
static靜態(tài):
對(duì)于類內(nèi)部構(gòu)成來說,可以進(jìn)行如下分類:
聲明3個(gè)complex c1, c2, c3,此時(shí):
非靜態(tài)成員非靜態(tài)成員變量是獨(dú)立的三份數(shù)據(jù),占用三份獨(dú)立的內(nèi)存空間。
static 成員三個(gè)對(duì)象只有一個(gè)static成員,內(nèi)存中只有一份。
舉例:100萬個(gè)銀行用于,某些屬性不同,但是如利率的信息相同,利率就可以定義為static。
非靜態(tài)函數(shù)三個(gè)對(duì)象的成員函數(shù)只有一份, 函數(shù)被調(diào)用時(shí)通過隱藏的this指針區(qū)分對(duì)象。
static 函數(shù)static函數(shù)沒有this指針,無法得到this。所以不能訪問非靜態(tài)成員。通常用來存取static成員。
Singleton設(shè)計(jì)模式:
只有A自己能創(chuàng)建自己,保證A只有一份。只有在使用時(shí)才創(chuàng)建A。
強(qiáng)悍的cout:
cout就是一種ostream
?
類模板(模板類):
告訴編譯器,目前T只是個(gè)符號(hào)。這樣就行成了類模板或模板類。
在創(chuàng)建對(duì)象時(shí)告訴編譯器T具體是什么,然后查找替換。
函數(shù)模板(functiontemplate):
類的模板使用時(shí)需要明確指出具體的類型,函數(shù)模板無需這樣。因?yàn)榫幾g器會(huì)做參數(shù)推導(dǎo)(argument deduction)處理。
標(biāo)準(zhǔn)庫中常用函數(shù)模板。
命名空間namespace:
直接使用:“using namespace std;”,將std的包裝全部打開,這樣cin、cout等等全部內(nèi)容可以直接使用。
單個(gè)打開:“using std::out;”,只打開cout,使用cin還需要“std::cin”。