
- C++基礎
- C++主頁
- C++概述
- C++環境設定
- C++基本語法
- C++註釋
- C++ Hello World
- C++省略名稱空間
- C++常量/字面量
- C++關鍵字
- C++識別符號
- C++資料型別
- C++數值資料型別
- C++字元資料型別
- C++布林資料型別
- C++變數型別
- C++變數作用域
- C++多個變數
- C++基本輸入/輸出
- C++修飾符型別
- C++儲存類
- C++運算子
- C++數字
- C++列舉
- C++引用
- C++日期和時間
- C++控制語句
- C++決策
- C++ if 語句
- C++ if else 語句
- C++巢狀if語句
- C++ switch 語句
- C++巢狀switch語句
- C++迴圈型別
- C++ while 迴圈
- C++ for 迴圈
- C++ do while 迴圈
- C++ foreach 迴圈
- C++巢狀迴圈
- C++ break 語句
- C++ continue 語句
- C++ goto 語句
- C++建構函式
- C++建構函式和解構函式
- C++複製建構函式
C++中的儲存類
儲存類定義了 C++ 程式中變數和/或函式的作用域(可見性)和生命週期。這些說明符位於它們修飾的型別之前。以下儲存類可用於 C++ 程式
- auto
- register
- static
- extern
- mutable
auto 儲存類
auto 儲存類是所有區域性變數的預設儲存類。
示例
以下是 auto 儲存類的示例:
{ int mount; auto int month; }
上面的示例定義了兩個具有相同儲存類的變數,auto 只能在函式內使用,即區域性變數。
register 儲存類
register 儲存類用於定義應儲存在暫存器而不是 RAM 中的區域性變數。這意味著變數的最大大小等於暫存器大小(通常是一個字),並且不能對其應用一元“&”運算子(因為它沒有記憶體位置)。
示例
以下是 register 儲存類的示例:
{ register int miles; }
register 應該只用於需要快速訪問的變數,例如計數器。還應注意,定義“register”並不意味著變數將儲存在暫存器中。這意味著它可能會儲存在暫存器中,具體取決於硬體和實現限制。
static 儲存類
static 儲存類指示編譯器在程式的生命週期內保持區域性變數的存在,而不是在每次進入和退出作用域時建立和銷燬它。因此,使區域性變數為 static 允許它們在函式呼叫之間保持其值。
static 修飾符也可以應用於全域性變數。這樣做會導致該變數的作用域限制在其宣告的檔案中。
在 C++ 中,當 static 用於類資料成員時,它會導致只有一個副本由其類的所有物件共享。
示例
以下是 static 儲存類的示例:
#include <iostream> // Function declaration void func(void); static int count = 10; /* Global variable */ main() { while(count--) { func(); } return 0; } // Function definition void func( void ) { static int i = 5; // local static variable i++; std::cout << "i is " << i ; std::cout << " and count is " << count << std::endl; }
編譯並執行上述程式碼後,將產生以下結果:
i is 6 and count is 9 i is 7 and count is 8 i is 8 and count is 7 i is 9 and count is 6 i is 10 and count is 5 i is 11 and count is 4 i is 12 and count is 3 i is 13 and count is 2 i is 14 and count is 1 i is 15 and count is 0
extern 儲存類
extern 儲存類用於引用對所有程式檔案可見的全域性變數。當您使用“extern”時,變數不能被初始化,因為它只是將變數名指向之前定義的儲存位置。
當您有多個檔案並定義一個全域性變數或函式(也將在其他檔案中使用)時,將在另一個檔案中使用extern 來引用已定義的變數或函式。為了理解,extern 用於在另一個檔案中宣告全域性變數或函式。
extern 修飾符最常用於兩個或多個檔案共享相同的全域性變數或函式,如下所述。
示例
以下是 extern 儲存類的示例:
第一個檔案:main.cpp
#include <iostream> int count ; extern void write_extern(); main() { count = 5; write_extern(); }
第二個檔案:support.cpp
#include <iostream> extern int count; void write_extern(void) { std::cout << "Count is " << count << std::endl; }
這裡,extern 關鍵字用於在另一個檔案中宣告 count。現在編譯這兩個檔案,如下所示:
$g++ main.cpp support.cpp -o write
這將生成write 可執行程式,嘗試執行write 並檢查結果,如下所示:
$./write 5
mutable 儲存類
mutable 說明符僅適用於類物件,在本教程後面將討論。它允許物件的成員覆蓋 const 成員函式。也就是說,mutable 成員可以被 const 成員函式修改。