使用类/结构的不同方法 - C++

Nav*_*K N 2 c++ methods

struct Foo
{
    void SayHello()
    {
        std::cout << "Hi, I am Foo";
    }
};
Run Code Online (Sandbox Code Playgroud)

我有上面给出的结构.我在其中一个代码库中看到过这样的用法.

Foo foo;
{
     foo.SayHello();
}
Run Code Online (Sandbox Code Playgroud)

IMO,它也一样

Foo foo;
foo.SayHello();
Run Code Online (Sandbox Code Playgroud)

或者第一种方法有什么优势/差异?

有什么想法吗?

Joh*_*itb 5

在这种特殊情况下,它看起来很奇怪,就像一个候选人.在其他情况下可能有用:

Foo foo;
{
    ReturnValue v = foo.SayHello();
    Send(v);
}
...
Run Code Online (Sandbox Code Playgroud)

它会限制范围v.一个常见的用途是使其中的对象更早破坏.然后可以在大括号内使用在构造函数和析构函数中执行特殊操作的类:

Foo foo;
{
    MutexLocker locker(sendMutex);
    ReturnValue v = foo.SayHello();
    Send(v);
}
...
Run Code Online (Sandbox Code Playgroud)

v在该示例中发送时将保持发送队列的锁定,并且当在闭合支撑处销毁锁定器时释放.