C++里的花括号{},块,作用域

1 篇文章 0 订阅
1 篇文章 0 订阅
{ } 里的内容是一个“块”。

单独的{ }在执行顺序上没有改变,仍然是顺序执行,不同的是标识符的作用域限定 。



#include <iostream>
#include <string>
using namespace std;

class tcalss
{
        string Name;
   public:
        tcalss(string name){Name=name;cout<<"build "<<Name<<endl;};
        ~tcalss(){cout<<"kill "<<Name<<endl;};
};

int main()
{

        int Test=100;
        cout<<"out of {} Test ="<<Test<<endl;

        tcalss x("class out of {}");
      
        {
               tcalss y("class in {}");
               float Test=3.14159;
               cout<<"in {} Test= "<<Test<<endl;
        }
      
        cout<<"Out Of {} Test="<<Test<<endl;

======================================================================================================
花括号可以看作是作用域标识符,除了在写函数时候用到,它还有一个作用就是表示变量的作用域:
{
    int a=0;
    {
        int b=0;
        a=1;  //正确,还在a的作用域中
    }
    b=1;    //错误,因为不在b的作用域,b已经被销毁了
}
==========================================================================================================
参考:http://www.360doc.com/content/14/0417/11/11948835_369707933.shtml
在C/C++中大括号指明了变量的作用域,在大括号内声明的局部变量其作用域自变量声明开始,到大括号之后终结。
void MyProcess(MyType input, MyType &output)
{
   MyType filter = input;

   {
      MyType temp;
      step1(filter,temp);
   }

   {
      MyType temp;
      step2(filter,temp);
   }

   {
      MyType temp;
      step3(filter,temp);
   }
   output = filter;
}

以上程序实现了简单的管道/过滤器结构:
      temp1    temp2   temp3
       |       |      |
input --> step1 --> step2 --> step3 --> output
temp都是临时变量,如果没有大括号的约束,每个临时变量都存在于函数作用域中,那么频繁增减流程时出错的概率大大增加。
放在大括号中,不仅程序阅读起来很清楚,而且也不容易出错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值