假设有一个Foo类,比如
class Foo {
public:
void bar();
operator bool() const { return true; }
};
Run Code Online (Sandbox Code Playgroud)
然后就可以做到
if(Foo foo = Foo())
{
if(Foo foo = Foo())
{
foo.bar();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我无法掌握这里的范围分辨率(我希望重新声明foo的编译器错误).
我希望foo.bar()在第二个foo上执行(它的范围是"更接近")但是我保证它实际上是与第一个foo不同的对象吗?此外,它们是否各自独立处置(它们的析构函数被称为)在它们各自的if块的末尾?