作用域总结

Posted ycldbk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作用域总结相关的知识,希望对你有一定的参考价值。

作用域

? 作用域是是一个标识符在程序正文中有效的区域。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

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

以上是关于作用域总结的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript学习总结2--作用域和闭包

关于Javascript作用域及作用域链的总结

作用域知识总结

jsp作用域总结

JavaScript面试题总结系列

关于作用域和作用域链的总结