C++第三次作业

C++第三次作业

标识符的作用域与可见性

一、作用域

定义:作用域是一个标识符在程序正文中有效的区域。C++中标识符的作用域有函数原型作用域、局部作用域、类作用域和命名空间作用域。

1.函数原型作用域

函数原型作用域是C++中最小的作用域。
在函数原型声明时形式参数的作用范围就是函数原作用域。
例如:
double area(double radius);

2.局部作用域

函数形参列表中形参的作用于,从形参列表中的声明处开始,到整个函数体结束之处为止
函数体内声明的变量,其作用域从声明处开始,一直到声明所在的块结束的大括号为止。
块就是一堆大括号括起来的一段程序。
具有局部作用域的变量也称为局部变量。

3.类作用域

对类成员访问的三种方式:

  • 如果在x的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以直接访问成员m。
  • 通过表达式x.m或者x::m。这正是程序中访问对象成员的最基本方法。
  • 通过ptr->m这样的表达式,其中ptr为指向x类第一个对象的指针。

4.命名空间作用域

命名空间:一个命名空间确定了一个命名空间作用域,凡是在该命名空间之内声明的,不属于前面所述各个作用域的标识符,都属于该命名空间作用域。
命名空间的语法形式:

namespace 命名空间名{
命名空间内的各种声明(函数声明、类声明)
}
引用其他命名空间的标识符如下:
命名空间名::标识符名

例如:

namespace someNs{

class someClass

}

作用域实例:
额
运行结果:
img

二、可见性

程序运行到某一点,能够引用到的标识符,就是该出可见的标识符。
命名空间的作用域最大,接下来依次是类作用域和局部作用域。
作用域的可见性一般规则:

  • 标识符要声明在前,引用在后。
  • 在同一作用域中,不能声明同名的标识符。
  • 在没有互相包含关系的不同的作用域中声明的同名标识符,互不影响。
  • 如果在两个货多个具有包含关系的作用域中声明了同名标识符,则外层标识符在内层不可见。
posted @ 2019-09-27 17:46  小小鱼海棠  阅读(202)  评论(0编辑  收藏  举报