范围

C++ 名称在程序的某些区域只能使用。 此区域称作 “范围”名称。 范围确定 “生存期不表示静态作用域对象的”名称。 范围还确定名称的可见性,那么,当类构造函数和析构函数调用时,属性,并且,当本地变量的范围缩小到初始化时。 (有关更多信息,请参见 构造函数析构函数。)具有五个范围:

  • 在块内声明的**局部范围   **的名称在中进行身份验证的用户访问的块和块包含由并在问题的声明之后。 形参的名称对函数的在最外层的范围内块函数具有局部范围,,则声明于封闭函数体的块。 考虑以下代码片断:

    {
        int i;
    }
    

    由于 i 的声明在大括号内的块, i 具有局部范围并将结束大括号前不可访问,因为没有代码访问它。

  • **功能范围   **标签是具有功能范围的唯一名称。 它们可以任意位置在函数内部使用,但是,不可访问外部函数。

  • 声明外部的所有名称所有块的**文件大小   **或类有文件范围。 它是可访问的任意位置。该翻译单元在其声明之后。 不声明静态对象处理文件大小的名称通常称为全局名称。

    也称为在 C++ 中,文件范围是命名空间范围。

  • 类成员的类范围   名称的类范围。 类成员函数只能获取使用成员选择运算符 (.– AMP_GT) 或指向成员的指针运算符 (. *– AMP_GT*) 的对象或指针于该类对象;非静态类成员数据被视为本地对该类的对象。 请考虑类声明:

    class Point
    {
        int x;
        int y;
    };
    

    在类 Point的范围内,类成员 x 和 y 考虑。

  • 在函数原型声明的**原型范围   **名称只是可见的直到原型的末尾。 以下原型声明三个名称 (strDestination、 numberOfElements和 strSource);这些名称超出范围在原型末尾:

    errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );
    

请参见

参考

基本概念