1 動態記憶體
1,c++程式中所使用的物件都是有著嚴格定義的生存期。
全域性物件:在程式啟動時分配,程式結束時銷毀。
區域性物件:在進去其定義所在的程式塊時被建立,在離開塊時銷毀。
區域性static物件:在第一次使用前分配,在程式結束時銷毀。
區域性變數:
作用域:{}
生命週期:定義時分配空間,離開{},自動釋放、
當區域性變數未初始化時,預設值時隨機值。
static區域性變數:
作用域:{}
生命週期:編譯時分配空間,初始化只能使用常量,程式結束時空間釋放。
當靜態區域性變數未初始化時,預設值為0
全域性變數:
作用域:任何地方使用,但是使用前必須宣告。
生命週期:編譯時分配空間,程式結束時釋放。
全域性變數只能定義一次 ,但是可以宣告多次。
static全域性變數:
生命週期:編譯時分配空間,程式結束時釋放。
static全域性變數可以定義在多個.c檔案中。
extern函式 和 static函式的區別:
extern關鍵字:實現呼叫另乙個檔案中的函式和變數而不通過標頭檔案引用。extern函式只能定義一次。
static關鍵字:只能在定義的檔案中使用當前的函式,不同檔案都可以定義相同函式一次。
全域性變數和靜態變數是在程式編譯期就分配到資料段和bss段。
c 智慧型指標
auto prt 它是 它所指向物件的擁有者 所以當自身物件被摧毀時候,該物件也將遭受摧毀,要求乙個物件只有乙個擁有者,注意 auto prt 不能使用new 來分配物件給他 include include using namespace std template void bad print au...
c 智慧型指標
很久沒寫部落格了,不知道如何表達了,哈哈.我先介紹一下深淺拷貝.class copy 此時a.ptr和b.ptr指向同乙個物件,當我們delete a.ptr時 b.ptr所指向的物件已經不存在了,要是我們引用b.ptr指向的物件也就會出問題了.深拷貝 把a.ptr所指向的物件拷貝乙份給b.ptr ...
c 智慧型指標
記得前不久有一次面試被問到智慧型指標的實現,當時對智慧型指標只是聽說但沒有了解過,就亂七八糟地說了一遍。今天寫了一遍智慧型指標,用了引用計數的概念。主要思想就是,用乙個新類對原本需要的型別進行了一層封裝,這個新類中儲存了原本的物件指標和乙個引用計數的指標,之所以全部用指標來儲存,就是因為會出現多個新...