下面隨筆記錄了C++物件的生存期知識
靜態生存期
-
這種生存期與程式的運行期相同,
-
在檔案作用域中宣告的物件具有這種生存期,
-
在函式內部宣告靜態生存期物件,要冠以關鍵字static ,
動態生存期
-
塊作用域中宣告的,沒有用static修飾的物件是動態生存期的物件(習慣稱區域生存期物件),
-
開始于程式執行到宣告點時,結束于命名該識別符號的作用域結束處,
舉例代碼
1 #include<iostream> 2 3 using namespace std; 4 5 int i = 1; // i 為全域變數,具有靜態生存期, 6 7 void other() { 8 9 static int a = 2; 10 11 static int b; 12 13 // a,b為靜態區域變數,具有全域壽命,區域可見, 14 15 //只第一次進入函式時被初始化, 16 17 int c = 10; // C為區域變數,具有動態生存期, 18 19 //每次進入函式時都初始化, 20 21 a += 2; i += 32; c += 5; 22 23 cout<<"---OTHER---\n"; 24 25 cout<<" i: "<<i<<" a: "<<a<<" b: "<<b<<" c: "<<c<<endl; 26 27 b = a; 28 29 } 30 31 32 33 int main() { 34 35 static int a;//靜態區域變數,有全域壽命,區域可見, 36 37 int b = -10; // b, c為區域變數,具有動態生存期, 38 39 int c = 0; 40 41 cout << "---MAIN---\n"; 42 43 cout<<" i: "<<i<<" a: "<<a<<" b: "<<b<<" c: "<<c<<endl; 44 45 c += 8; other(); 46 47 cout<<"---MAIN---\n"; 48 49 cout<<" i: "<<i<<" a: "<<a<<" b: "<<b<<" c: "<<c<<endl; 50 51 i += 10; other(); 52 53 return 0; 54 55 }
運行結果
1 運行結果: 2 3 ---MAIN--- 4 5 i: 1 a: 0 b: -10 c: 0 6 7 ---OTHER--- 8 9 i: 33 a: 4 b: 0 c: 15 10 11 ---MAIN--- 12 13 i: 33 a: 0 b: -10 c: 8 14 15 ---OTHER--- 16 17 i: 75 a: 6 b: 4 c: 15
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/261593.html
標籤:C++
下一篇:C++類的友元機制說明
