C 智慧型指標

2021-09-28 12:16:18 字數 726 閱讀 6104

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 智慧型指標

記得前不久有一次面試被問到智慧型指標的實現,當時對智慧型指標只是聽說但沒有了解過,就亂七八糟地說了一遍。今天寫了一遍智慧型指標,用了引用計數的概念。主要思想就是,用乙個新類對原本需要的型別進行了一層封裝,這個新類中儲存了原本的物件指標和乙個引用計數的指標,之所以全部用指標來儲存,就是因為會出現多個新...