C/C++變量在嵌套域內可見
阿新 • • 發佈:2018-08-04
模板 out 根據 所有 space 相同 含義 cpp sco
C++程序中每個名字都必須指向唯一的一個實體(如對象、函數、類型或模板)。但是我們都知道,在一個程序中,經常出現相同的名字指向不同的實體。這個實現的機制就是編譯器根據上下文(Context)區分出名字的不同含義。而用來區分名字含義的一般上下文就是域(scope)。C++支持三種形式的域:局部域(local scope),名字空間域(namespace scope)和類域。
比如在一個cpp文件裏,有一個全局變量,相對的裏面的函數就是這個全局域的嵌套域,這個全局變量在所有嵌套域可見。
又如class裏,又有一個class,那麽外層的變量在裏面的class也是可見的:
#include <iostream> using namespace std; class c1 { public: int a; void foo(); class c2 { public: int a; void foo(); } b; }; void c1::foo() { a = 1; } void c1::c2::foo() { a = 2; } int main() { class c1 f; f.foo(); f.b.foo(); cout << f.a << endl; cout << f.b.a << endl; return 0; }
C/C++變量在嵌套域內可見