码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++变量在嵌套域内可见

时间:2018-08-04 12:34:32      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:context   文件   ++   end   include   名字空间   void   变量   程序   

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++变量在嵌套域内可见

标签:context   文件   ++   end   include   名字空间   void   变量   程序   

原文地址:https://www.cnblogs.com/drunknbeard/p/9418224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!