Cスタイル言語の無名{}ブロックの目的は何ですか?

変数のスコープを { } 内のブロックに制限します。


括弧はスコープの領域を指定します - 括弧内で宣言されたものは、それらの外では見えません.

さらに、C++ では、スタックに割り当てられたオブジェクト (たとえば、「new」を使用せずに) は、スコープ外になると破棄されます。

場合によっては、作成者がソースを見ている人にとって注目に値すると感じる関数の特定の部分を強調する方法にもなります。これが良い使い方かどうかは議論の余地がありますが、私はそれを見てきました.


オブジェクトが範囲外になると、特定のリソースが解放されることを意味します。例:

void function()
{
    {
        std::ofstream out( "file.txt" );
        out << "some data\n";
    }
    // You can be sure that "out" is closed here
}