下面是關於C++的標識符的做用域與可見性學習記錄,僅供參考ios
做用域是一個標識符在程序正文中有效的區域。函數
做用域分類學習
①函數原型做用域spa
②局部做用域(快做用域)指針
③類做用域code
④文件做用域對象
⑤命名空間做用域blog
函數原形做用域ci
函數原型中的參數,其做用域始於"(",結束於")"。作用域
函數原形做用域舉例
double area(double radius);
局部做用域
函數的形參、在塊中聲明的標識符;
其做用域自聲明處起,限於塊中。
局部做用域舉例
1 void fun(int a) { 2 int b = a; 3 cin >> b; 4 if (b > 0) { 5 int c; 6 7 ...... 8 } 9 }
類做用域
類的成員具備類做用域,其範圍包括類體和非內聯成員函數的函數體。
若是在類做用域之外訪問類的成員,要經過類名(訪問靜態成員),或者該類的對象名、對象引用、對象指針(訪問非靜態成員)。
文件做用域(靜態做用域)
不在前述各個做用域中出現的聲明,就具備文件做用域,這樣聲明的標識符其做用域開始於聲明點,結束於文件尾。
可見性
可見性是從對標識符的引用的角度來談的概念
可見性表示從內層做用域向外層做用域「看」時能看見什麼。
若是標識在某處可見,就能夠在該處引用此標識符。
若是某個標識符在外層中聲明,且在內層中沒有同一標識符的聲明,則該標識符在內層可見。
對於兩個嵌套的做用域,若是在內層做用域內聲明瞭與外層做用域中同名的標識符,則外層做用域的標識符在內層不可見。
例如
1 #include<iostream> 2 3 using namespace std; 4 5 int i; //全局變量,文件做用域 6 7 int main(void) 8 { 9 i = 5; 10 { 11 int i; //局部變量,局部做用域 12 13 i = 7; 14 cout << "i =" << i << endl; 15 } 16 cout << "i= " << i <<endl; 17 return 0; 18 }
運行結果
1 i=7 2 i=5