>[info]# 生命期
生命期的**對象**是變量表示符
## **動態生命期**
對象:普通局部變量
位置:堆區(heap)
初值:不確定值(隨機值)
時機:運行時(手動分配)
長短:短
- 這種生命期由程序中特定的函數調用(malloc()和free())或操作符(new和delete)來創建和釋放.
- 具有動態生命期的變量駐留在內存的堆區中.
- 當用函數malloc()或操作符new為變量分配空間時,生命期開始;當用函數free()或操作符delete釋放該變量的空間或程序結束時,生命期結束.
new運算符使用的一般格式為:
**new 類型[長度];**
delete運算符使用的一般格式為:
**delete[ ] 指針變量;**
## **局部生命期**
對象:普通局部變量
位置:棧區(stack)
初值:不確定值(隨機值)
時機:編譯時
長短:短
- 在函數內部聲明的變量或者是塊中聲明的變量,具有局部生命期.該生命期起始于聲明點,結束于作用域結束處.
- 區別: 具有局部生命期的變量肯定具有局部作用域; 而具有局部作用域的變量,若為普通局部變量,則具有局部生命期;若為靜態局部變量,則具有靜態生命期.
- 具有局部生命期的變量駐留在內存的棧區;若不作初始化,其值不確定.
## **靜態生命區**
對象:普通全局變量、靜態全局變量、靜態局部變量
位置:數據區(date)
初值:相應類型的0值
時機:編譯之前
長短:長
- 這種生命期與程序的運行期相同,一旦程序開始運行,這種生命期的變量就存在,當程序結束時,其生命期就結束.
- 全局變量,靜態全局變量,靜態局部變量,函數都具有靜態生命期,駐留在內存的全局數據區或代碼區.
- 靜態生命期的變量,若不作顯式初始化,C++編譯器會自動將其初始化成(相應類型的)0.
- 介紹
- 編程設計語言
- 第一章 對C++的初步認識
- 1.2 最簡單的C++程序
- 1.3 C++對C的補充
- 1.3.1 return
- 1.3.2 輸入輸出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定義常變量
- 1.3.5 函數原型聲明
- 1.3.6 內置函數
- 1.3.7 函數重載
- 1.3.8 函數模板
- 1.3.9 有默認值的參數
- 1.3.10 作用域
- 1.3.11 const修飾指針
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 變量
- 1.3.15 字符串變量
- 第二章 類與對象
- 2.2 類的聲明和對象的定義
- 2.3 類的成員函數
- 第三章 關于類和對象的進一步討論
- 3.1 構造函數
- 3.1.1 對象的初始化
- 3.1.2 構造函數
- 3.2 析構函數
- 3.3調用析構函數和構造函數的順序
- 3.4 對象數組
- 3.5 對象指針
- 3.6 共享數據的保護
- 3.7 對象的建立與釋放
- 3.8 對象的賦值與復制
- 3.9 靜態成員
- 3.10 友元
- 3.11 類模板
- 第四章 運算符重載
- 數據類型轉換
- 運算符重載
- 重載流插入運算符和流提取運算符
- 第五章 繼承與派生
- 繼承與派生
- 第六章 多態性與虛函數
- 多態性
- 虛函數
- 純虛函數與抽象類