作用域总结

作用域

​ 作用域是是一个标识符在程序正文中有效的区域。c++中标识符的作用域有 <函数原型作用域> <局部作用域> <类作用域> <命名空间作用域>

1.函数原型作用域

​ 在函数原型声明时形式参数的作用范围就是函数原型作用域。

例子:double area(double radius);

2.局部作用域

​ 1.函数形参列表中形参的作用域,从形参列表中的声明处开始,到整个函数体结束之处为止。

​ 2.函数体内声明的变量其作用域从声明处开始,一直到声明所在的块结束的大括号为止。

​ 3.具有局部作用域的变量也称为局部变量。

3.类作用域
类X的成员m具有类作用域

​ 1.如果在X的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以直接访问成员m。

​ 2.通过表达式x.m或者X::m。这正是程序中访问对象成员的最基本方法。

​ 3.通过ptr->m这样的表达式,其中ptr为指向X类的一个对象的指针。

4.命名空间作用域

例子1:

namespace SomeNS

{

​ class SomeClass{.....};

}

例子2:

SomeNS::SomeClass obj1;

例子3:

using 命名空间名::标识符名;

using namespace 命名空间标识符;

例子4:

namespace OuterNS

{

​ namespace InnerNs{

class SomeClass{.......};

}

}

例子5:

namespace{

匿名命名空间内的各种声明(函数声明、类声明、.......)

}

程序实例:

include < iostream>

using namespace std;
int i; //在全局命名空间中的全局变量
namespace Ns{
int j; //在Ns命名空间中的全局变量
};
int main() {
i=5; //为全局变量i赋值
Ns::j=6; //为全局变量j赋值
{ //子块1
using namespace Ns;//使得在当前块中可以直接引用Ns命名空间的标识符
int i; //局部变量,局部作用域
i= 7;
cout<<”i="<<i<<endl;//输出7
cout<<”j="<<j<<endl;//输出6
}
cout<<”i="<<i<<endl;//输出5
return 0;
}

运行结果:

i=7
j=6
i=5

具有命名空间作用域的变量也称为全局变量。

猜你喜欢

转载自www.cnblogs.com/ycldbk/p/11605242.html