嵌套 if 中的范围不明确

2024-04-12

假设有一个 Foo 类,例如

class Foo {
public:
  void bar();
  operator bool() const { return true; }
};

那么我们可以做

if(Foo foo = Foo())
{
  if(Foo foo = Foo())
  {
    foo.bar();
  }
}

现在我无法掌握这里发生的范围解析(我预计重新声明 foo 会出现编译器错误)。

我希望 foo.bar() 在第二个 foo 上执行(其范围“更接近”),但我是否可以保证它实际上是与第一个 foo 不同的对象?此外,它们是否各自独立地放置在各自 if 块的末尾(称为它们的析构函数)?


C++ 非常乐意您声明一个具有相同名称的变量,只要它位于嵌套作用域内,这样就不会产生歧义。

我希望 foo.bar() 在第二个 foo 上执行(其范围“更近”)

你是对的

但我能保证它实际上是与第一个 foo 不同的对象吗?

Yes

此外,它们是否各自独立地放置在各自 if 块的末尾(称为它们的析构函数)?

Yes

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌套 if 中的范围不明确 的相关文章

随机推荐