>[info] # 作用域
**作用域**是標識符在程序中的有效范圍,即可見性區域.
## **作用域類型**
局部作用域:局部變量 塊語句{}
文件作用域:全局變量
函數作用域
函數原型作用域
類作用域
## **局部作用域**
- 當標識符的聲明出現在由一對花括號括起來的一段程序(塊)內時,該標識符的作用域從聲明點開始,到塊結束處為止.
- 如果在if語句和switch語句的條件表達式中聲明標識符,則該標識符的作用域在該語句內.
- 在if_else分支語句內聲明的標識符,其作用域在該分支內.
- 在for語句的第一個表達式中聲明的標識符,其作用域在該語句內.
## **函數作用域**
- 標號是唯一具有函數作用域的標識符;
- go to語句和switch_case語句使用標號;
- 標號聲明使得該標識符在一個函數內的任何位置均可見.
- go to或switch語句不應使控制從一個聲明的作用域外跳到該聲明的作用域內,因為這種跳轉越過了變量的聲明語句,使得變量不能被初始化.
- 局部變量不具有函數作用域.
## **函數原型作用域**
- 函數原型聲明中所作的參數聲明在此作用域中,該作用域開始于函數原型聲明的左括號,結束于右括號.
- 如int MAX(int a,int b);中,參數a,b就具有函數原型作用域,即離開分號 **’;’** 后,參數a,b的作用域都將不存在,所以參數a,b可有可無,即可寫成:
int MAX(int ,int);
- 建議:為了增強程序的可讀性,保持良好的編程風格,一般應對程序中所出現的所有函數都要作函數原型聲明.
## **文件作用域**
- 也稱全局作用域,是在所有函數定義之外說明的,其作用域從說明點開始,一直延伸到源文件結束.
- 適用對象:全局變量,靜態全局變量和靜態函數.
- 作用域擴展: 全局變量本應是文件作用域的,但可經其它源文件中的extern聲明,擴展其作用域至其它源文件中. 在頭文件的文件作用域中所進行的聲明,一旦該頭文件被某個源文件嵌入(即包含),則聲明的作用域也擴展到 該源文件中,直到該源文件結束,例如cout和cin.
- 介紹
- 編程設計語言
- 第一章 對C++的初步認識
- 1.2 最簡單的C++程序
- 1.3 C++對C的補充
- 1.3.1 return
- 1.3.2 輸入輸出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定義常變量
- 1.3.5 函數原型聲明
- 1.3.6 內置函數
- 1.3.7 函數重載
- 1.3.8 函數模板
- 1.3.9 有默認值的參數
- 1.3.10 作用域
- 1.3.11 const修飾指針
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 變量
- 1.3.15 字符串變量
- 第二章 類與對象
- 2.2 類的聲明和對象的定義
- 2.3 類的成員函數
- 第三章 關于類和對象的進一步討論
- 3.1 構造函數
- 3.1.1 對象的初始化
- 3.1.2 構造函數
- 3.2 析構函數
- 3.3調用析構函數和構造函數的順序
- 3.4 對象數組
- 3.5 對象指針
- 3.6 共享數據的保護
- 3.7 對象的建立與釋放
- 3.8 對象的賦值與復制
- 3.9 靜態成員
- 3.10 友元
- 3.11 類模板
- 第四章 運算符重載
- 數據類型轉換
- 運算符重載
- 重載流插入運算符和流提取運算符
- 第五章 繼承與派生
- 繼承與派生
- 第六章 多態性與虛函數
- 多態性
- 虛函數
- 純虛函數與抽象類