【发布时间】:2016-03-01 09:12:30
【问题描述】:
据我所知,} 实际上包含一些操作,例如销毁堆栈分配的对象,因为当对象的析构函数中发生一些错误时,VS.NET 将我指向花括号的关闭,甚至你可以使用F11 进入它并查看已调用的析构函数中发生了什么。但是,我注意到{ 也是一个操作,如果我尝试使用F11 进入它,VS.NET 告诉我它需要memset.asm 文件才能继续调试。
{ 内部到底发生了什么?
【问题讨论】:
-
实际上花括号本身不是运算符,它们“包含”没有代码。是编译器添加代码,然后作用域开始和结束,但它与大括号并没有真正的关系(除了它们显示作用域的开始和结束位置)。当你走进例如析构函数,它是在您的代码之后但在范围实际结束之前插入的代码。光标结束在右大括号上是因为调试器没有任何其他位置信息。
-
我明白了,谢谢。所以,我的问题应该是在我的代码在范围开始之前发生了什么
标签: c++ c++11 visual-studio-2013 curly-braces