1. 程式人生 > >C/C++變量在嵌套域內可見

C/C++變量在嵌套域內可見

模板 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++變量在嵌套域內可見