宣告變數時根據初始化表示式自動推斷該變數的型別、宣告函式時函式返回值的佔位符。
c++11已棄用。
auto f=
3.14
;//double
autos(
"hello");
//const char*
auto z = new auto(9
);// int*
auto x1 =
5, x2 =
5.0, x3=
'r';
//錯誤,必須是初始化為同一型別
定義儲存在暫存器中而不是 ram 中的區域性變數。這意味著變數的最大尺寸等於暫存器的大小(通常是乙個詞),且不能對它應用一元的 『&』 運算子(因為它沒有記憶體位置)。
class box
double
volume()
private:
double length;
// 長度
double breadth;
// 寬度
double height;
// 高度};
// 初始化類 box 的靜態成員
int box:
:objectcount =0;
intmain
(void
)
可以看出,類box在沒有例項化之前,就可以訪問objectcount這一靜態成員資料。
結論:1 類沒有例項化之前,只要靜態成員資料被初始化了,就可以訪問,意味著已經在記憶體中存在
2 如果不存在其他的初始化語句,在建立第乙個物件時,所有的靜態資料都會被初始化為零。
3 如果這個靜態成員是結構體,可以直接用{}初始化。
4.如果這個靜態成員是public的,那麼它可以被其他類訪問並改變值。如果它是private的,那麼它只能被類內的函式訪問並使用。
這個初始化使用的示例見上傳的**包:
提供乙個全域性變數/函式的引用,全域性變數/函式對所有的程式檔案都是可見的。當您使用 『extern』 時,對於無法初始化的變數/函式,會把變數/函式名指向乙個之前定義過的儲存位置。
mutable 說明符僅適用於類的物件,這將在本教程的最後進行講解。它允許物件的成員替代常量。也就是說,mutable 成員可以通過 const 成員函式修改。
使用 thread_local 說明符宣告的變數僅可在它在其上建立的執行緒上訪問。 變數在建立執行緒時建立,並在銷毀執行緒時銷毀。 每個執行緒都有其自己的變數副本。
thread_local 說明符可以與 static 或 extern 合併。
可以將 thread_local 僅應用於資料宣告和定義,thread_local 不能用於函式宣告或定義。用法如下:
在下面的例子中,計算機就會為每個執行緒開闢乙個變數rage的儲存空間。
#include
#include
#include
#include
thread_local unsigned
int rage =1;
std:
:mutex cout_mutex;
void
increase_rage
(const std:
:string& thread_name)
intmain()
a.join()
; b.
join()
;}
其輸出為:
rage counter for a:
2rage counter for main:
1rage counter for b:
2
C 學習筆記 儲存類
auto f 3.14 double autos hello const char auto z newauto 9 int auto x1 5,x2 5.0,x3 r 錯誤,必須是初始化為同一型別 include 全域性變數 static int count 10 函式 void func voi...
C 學習筆記 7 儲存類
儲存類儲存類定義 c 程式中變數 函式的範圍 可見性 和生命週期。這些說明符放置在它們所修飾的型別之前。下面列出 c 程式中可用的儲存類 auto register static extern mutable thread local c 11 從 c 11 開始,auto 關鍵字不再是 c 儲存類...
C 學習筆記(三)儲存類
下面列出 c 程式中可用的儲存類 auto 關鍵字用於兩種情況 宣告變數時根據初始化表示式自動推斷該變數的型別 宣告函式時函式返回值的佔位符。auto f 3.14 double auto s hello const char auto z new auto 9 int auto x1 5,x2 5...