C 學習筆記 六 儲存類

2021-10-08 21:06:50 字數 1862 閱讀 6004

宣告變數時根據初始化表示式自動推斷該變數的型別、宣告函式時函式返回值的佔位符。

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...