2018-01-03

Boolan?第二周

class with pointer members:

Big Three:拷貝構造、拷貝賦值、析構

拷貝構造:必須使用深拷貝(申請新的堆空間再復制),否則會出現兩個指針指向同一個堆空間的情況,易出錯。

拷貝賦值過程:1、刪除舊空間;2、重新分配和需復制內容同樣大小的空間;3、拷貝內容

拷貝賦值注意點:必須要先進行自我賦值的檢測,防止出錯(刪除自己,程序出錯)。

析構:釋放申請到的堆空間

stack棧:存在某作用域的一塊內存空間,函數被調用時會形成一個stack來放置接收參數以及返回地址。

heap堆:由操作系統(tǒng)提供的一塊global的內存空間,程序會動態(tài)分配從中取得若干區(qū)塊。

????????????????任何從堆中獲取的空間必須手動刪除。

靜態(tài)static:1、靜態(tài)對象的死亡時間相當于全局對象,程序結束后才會死亡。

? ? ? ? ? ? ? ? ? ? ? 2、靜態(tài)類成員:a、僅有一份,不存在與類內,在全局區(qū)。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?b、靜態(tài)類成員必須在類外申明(可以賦初值)才能使用。

? ? ? ? ? ? ? ? ? ? ? 3、靜態(tài)類成員函數:a、不帶有this指針,僅能操作靜態(tài)成員變量。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? b、調用時可以通過classname::static_function(),或object.static_function(),但無this指針

new:new一個對象時,先分配空間,后調用ctor

delete:delete對象時,先調用dtor,后釋放空間

動態(tài)分配的內存空間:

例:new complex

cookie 4bit ? ? //用于記錄整塊空間大小,空間大小為64bit,cookie內容為00000041(16進制),1表示借給你使用,0表示還給系統(tǒng)

debugger header ?32bit ? ? ? //僅存在于debug版程序中,release版本沒有

complex對象 ? 8bit

debugger header 4bit

pad ?4*3=12bit ? ? ? //為了湊足16的倍數,便于操作系統(tǒng)回收

cookie ?4bit

動態(tài)分配array數組:new type[ ],必須使用delete ?[ ]type,若無[ ],析構函數只調用1次,若為帶指針的對象會造成內存泄漏,統(tǒng)一習慣加[ ]。

Singleton:通過私有隱藏構造函數,私有靜態(tài)類對象,使用靜態(tài)成員函數作為對外接口,獲得僅能有1份的對象。

cout:一種ostream,通過重載<<符號實現

類模板:

例如:

template <typename T>

class complex

{

????????????complex (T r=0,T i=0):re(r),im(i) {}

? ? ? ? ? ? T re;T im;

.......

}

{

complex<double> c1(2.5,1.5); ? ? ? ? ? ? //使用時有一個type就對應生成一份代碼

complex<int> c2(2,6);

}

函數模板 function template:編譯器會自動推導

template <class T>

const T& min(const T& a,const T& b) ?//通用的比較取較小值函數

{

? ? ? ? ? return a<b ? a:b; ? ? ? ? //<符號可以寫重載以實現更多類對象比較

}

namespace命名空間:

namespace std

{ ...... ? ? ? ? ? }

使用范例:

1:

using namespace std;

int main(){ ? ?cin>>....;cout<<.....; ? ? ? ? }

2:

using std::cout;

int main(){ ? ?std::cin>>....;cout<<.....; ? ? ? ? }

3:

int main(){ ? ?std::cin>>....;std::cout<<.....; ? ? ? ? }

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容