第十章 名字控制

2021-06-27 01:36:49 字數 1039 閱讀 6232

在c和c++中,static都有兩種基本的含義。

1)在固定的位址上進行儲存分配。也就是說物件是在乙個特殊的靜態資料區上建立的,而不是每次函式呼叫時在堆疊上產生的。這也是靜態儲存的概念。

2)對乙個特定的編譯單位來說是區域性的。這樣,static控制名字的可見性,所以這個名字在這個單元或者類之外是不可見的。

c和c++都允許在函式內部定義乙個static物件,這個物件將儲存在程式的靜態資料區中,而不是在堆疊中。這個物件只在函式第一次呼叫時初始化一次,以後它將在兩次函式呼叫之間保持它的值。例如:

#includeusing namespace std;

char onechar(const char* chararray = 0)

else

return 0;

if(*s == '\0')

return 0;

return *s++;

}char* a = "abcdefghijklmn";

int main()

~x()

int main(){}

每個翻譯單元都可包含乙個未命名的名字空間——可以不用識別符號而只用「namespace」增加乙個名字空間。

在這個空間中的名字自動地在翻譯單元內無限制地有效。但是要確保每個翻譯單元摯友乙個未命名的名字空間,如果把乙個區域性名字放在乙個未命名的名字空間中,不需要加上static說明久可以讓它們作內部連線。

在乙個名字空間中引用乙個名字可以採取三種方法:第一種方法是用作用域運算子,第二種方法是用using指令把所有名字引入到名字空間中,第三種方法是用using宣告一次性引用名字。

可以把乙個靜態資料成員放在另乙個類的巢狀類中,然而不能在區域性類(在函式內部定義的類)中有靜態資料成員。

像靜態資料成員一樣,也可以建立乙個靜態成員函式,它為類的全體物件服務而不是為乙個類的特殊物件服務。靜態成員函式不能訪問一般的資料成員,而只能訪問靜態資料成員,也只能呼叫其他的靜態成員函式。通常,當前物件的位址(this)是被隱式地傳遞到被呼叫的函式的。但乙個靜態成員函式沒有this,所有它無法訪問一般的成員。

C 程式設計思想筆記 第十章 名字控制

三 名字空間 四 類中的靜態成員 五 c 中使用c的庫 建立名字是程式設計過程中的一項最基本的活動,當專案很大時,它會不可避免的包含大量的名字。c 允許我們對名字的產生和名字的可見性進行控制,包括名字 的儲存位置和名字的連線。本章主要介紹,static控制儲存和可見性,以及通過名字空間來控制訪問名字...

第十章 函式

使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...

第十章 屬性

z屬性 本章也比較簡單稍作介紹 無參屬性就是我們常見的屬性 可以封裝屬性 以執行緒安全方式訪問 有參屬性就是c 中的所引器 匿名型別 如圖遇到如下 具體點就是 上面的注釋也已經講清楚了,定義的型別之後,構造例項,然後初始化屬性。現在詳細說下 編譯器接收到 上圖 先用var 定義乙個型別,但是不具體指...