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

{ } 里的内容是一个“块”。

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



#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都是临时变量,如果没有大括号的约束,每个临时变量都存在于函数作用域中,那么频繁增减流程时出错的概率大大增加。
放在大括号中,不仅程序阅读起来很清楚,而且也不容易出错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS关于armv7,armv7s,arm64,i386,x86_64等问题

iOS测试分为模拟器测试和真机测试&#xff0c;处理器分为32位处理器&#xff0c;和64位处理器&#xff0c; 模拟器32位处理器测试需要i386架构&#xff0c;&#xff08;iphone5,iphone5s以下的模拟器&#xff09; 模拟器64位处理器测试需要x86_64架构&#xff0c;(iphone6以上的…

DebugView 调试入门

参考链接&#xff1a;http://blog.csdn.net/jiankunking/article/details/44984487 软件下载地址&#xff1a;点击打开链接 debugview 可以捕获程序中由TRACE(debug版本)和OutputDebugString输出的信息。支持Debug、Release模式编译的程序&#xff08;即该软件捕获的是exe直接运…

AJAX只支持字符类数据返回,不支持文件下载

如题转载于:https://www.cnblogs.com/caicaizi/p/5000363.html

Xcode中指令集相关选项

Xcode中指令集相关选项&#xff08;Build Setting中&#xff09; &#xff08;1&#xff09;Architectures Space-separated list of identifiers. Specifies the architectures (ABIs, processor models) to which the binary is targeted. When this build setting specifies…

DebugView使用笔记

1. 什么是DebugView? 它是Sysinternals公司的系列调试工具。可以捕获程序中由TRACE()和OutputDebugString输出的信息。 2. C需要完成哪些工作呢&#xff1f; 将打印的信息用OutputDebugString输出&#xff0c;示例&#xff1a; [cpp] view plaincopy #include "stdio.h&q…

DebugView的使用[通用汇总]

DebugView是一款免费辅助工具&#xff0c;用来输出捕捉OutputDebugString()函数输出的信息等。 1 下载 http://technet.microsoft.com/en-us/sysinternals/bb896647 1.1 介绍DebugView http://www.vcfans.com/2008/11/trace-show-about-a-tool-debugview-sent-a-message-to-tra…

Android 通信 EventBus

参考&#xff1a; Android 框架炼成 教你如何写组件间通信框架EventBusAndroid EventBus源码解析 带你深入理解EventBusAndroid EventBus实战 没听过你就out了快速Android开发系列通信篇之EventBusEventBus是一个publish/subscribe (发布 / 订阅) 消息的总线&#xff0c;简化了…

WIFI无线路由器的五种工作模式

http://www.360doc.com/content/12/0814/08/10560798_230064460.shtml

iOS面试题1

而技术开发面试&#xff0c;问一些技术相关的问题是必须的&#xff0c;最新的技术可能人人都趋之若鹜&#xff0c;但有些原理和基础的也希望都有了解。 这里整理了一些iOS相关的面试题&#xff0c;&#xff08;可能都已经老掉牙&#xff09;但是也想跟大家分享下&#xff01; 如…

高质量JAVA代码编写规范

1. Java 命名约定   除了以下几个特例之外&#xff0c;命名时应始终采用完整的英文描述符。此外&#xff0c;一般应采用小写字母&#xff0c;但类名、接口名以及任何非初始单词的第一个字母要大写。 1.1 一般概念   * 尽量使用完整的英文描述符   * 采用适用于相关领域的…

MFC中绘制动态曲线

参考&#xff1a; http://blog.csdn.net/zang141588761/article/details/50536788 [转载]MFC中画直线和曲线 一、画直线要想在MFC中画出有颜色的线条&#xff0c;首先就要设置DC的画笔&#xff0c;我们可以按如下方法来设置画笔&#xff1a;第一步&#xff1a;在View类中添加…

博客地址 RSS地址

博客地址 RSS地址 OneVs Den http://onevcat.com/atom.xml 破船之家 http://beyondvincent.com/atom.xml NSHipster http://nshipster.cn/feed.xml Limboy 无网不剩 http://feeds.feedburner.com/lzyy 唐巧的技术博客 http://blog.devtang.com/atom.xml Lex iOS notes http://i…

2015.11.27---Java

public class star{public static void main(String[] args) {System.out.print("ha");}}转载于:https://www.cnblogs.com/supermeimei/p/5001922.html

QT之深入理解QThread

QT之深入理解QThread 理解QThread之前需要了解下QThread类&#xff0c;QThread拥有的资源如下&#xff08;摘录于QT 5.1 帮助文档&#xff09;&#xff1a;在以上资源中&#xff0c;本文重点关注槽&#xff1a;start()&#xff1b;信号&#xff1a;started()、finished()&#…

常见人事问题

整体素养的常见问题 一、请你自我介绍一下你自己&#xff1f; &#xff08;面试官目的&#xff1a;深度了解求职者&#xff0c;看求职者基本的沟通和自我认知能力&#xff09; NO: 只说姓名、年龄、爱好等基本的信息后就没了。只重复简历里的内容&#xff0c;如工作经验就…

springMVC数据封装成POJO

springMVC把前台的数据封装为POJO与struts2的封装形式不同。struts2需要在控制器声明需封装的POJO&#xff0c;而springMVC不需要任何准备工作&#xff0c;只需在相应的方法的参数中加上需封装的POJO&#xff0c;当用户提交表单时&#xff0c;springMVC会根据表单中dom元素的na…

QT输入输出(四)之 QProcess

QProcess Qt提供了一个QProcess类用于启动外部程序并与之通信.这个类是异步工作的&#xff0c;而且在后台执行&#xff0c;这样用户界面就可以始终保持响应。 启动一个新的进程的操作非常简单,只需要将待启动的程序名称和启动参数传递给start()函数即可. 例如&#xff1a; QObj…

iOS 推送 逻辑

推送 阶段一&#xff1a;Provider[服务端]把要发送的消息&#xff0c;目的IOS设备标识打包&#xff0c;发送给APNS&#xff1b; 阶段二&#xff1a;APNS在自身的已注册Push服务的IOS设备列表中&#xff0c;查找有相应标识的IOS设备&#xff0c;并将消息发送到IOS设备&#xff1…

正则提取的url中的域名以及替换域名的方法 preg_match()和preg_replace()

<?php //网站的url$url http://www.baidu.com/index.php;//正则表达式$reg /(http):\/\/([^\/])/i;preg_match($reg, $url,$res);/** $res的结果array (size3)0 > string http://www.baidu.com (length20)1 > string http (length4)2 > string www.baidu.com (…

音视频开发

command s 截模拟器的屏幕 MP.4只是一个容器 H.264 H.263是真正的格式 H.265正在测试中 avi H.264 H.263 视频解码&#xff1a;将H.263 H.264转换为视频和音频的格式 视频编码&#xff1a; 解码&#xff1a;硬解码&#xff1a;GPU做的解码 CPU做除了图片以外的&#…