c++ --作用域與可見域


專題--作用域與可見域

一、作用域  

  c++作用域可分為5類:函數原型作用域、塊作用域、類作用域、文件作用域和全局(程序)作用域(跨文件)。

1. 函數原型作用域(最小的作用域)

  函數原型:int func(int x); 這是一個函數聲明,函數形參x 的作用域就時所謂的函數原型作用域。

2. 塊作用域

  一對大括號 { ... } 內的一段程序,塊中聲明的標識符作用域就是塊作用域。

3. 類作用域

  類成員的作用域。

4. 文件作用域(static

  全局靜態變量具有全局作用域,從聲明處開始,到文件(.cpp文件)結尾處結束。

5. 全局(程序)作用域(extern

  全局變量具有全局作用域,只要在使用前對其進行聲明(可定義性聲明/引用性聲明),便可在程序(有若干個文件組成)的任意位置使用全局變量。

二、可見域

  作用域指的是變量理論上有效的源代碼區域,而可見域指的是該變量實際的內存區域。如果沒有屏蔽發生,可見域和作用域應該是等價的

  只有在可見域內才能對變量進行合法的訪問。

  引用聲明不能提供全局可見性(不具備跨文件性質),這意味着,在使用全局變量之前,必須在當前文件或當前塊中進行引用聲明。

  內部靜態變量(局部static)的作用域、可見域及屏蔽法則和自動變量一樣,但外部靜態變量需要注意:在一個文件中聲明的外部靜態變量(全局static),將屏蔽其他文件中定義的同名全局變量。但是,不允許在同一個文件中定義同名的全局變量和外部靜態變量

  默認情況下,函數是全局的,可以在不同的文件中共享。和全局變量一樣,使用函數前必須要對其進行聲明(包含有函數聲明的頭文件)。

  可使用static關鍵字將函數聲明為文件內部的,這樣,只能在本文件中使用該函數,在函數定義和聲明中都要使用static關鍵字。static函數將屏蔽其他文件中外部定義的同名函數


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM