新しいローカルスコープを作るためには、中括弧によるブロックを使います。
C/C++ において中括弧 {} でくくられたブロックは新しいローカルスコープとなります。たとえば次のソースコードを見てください。
#include <iostream> int main(int argc, char *argv[]) { int value = 10; { int value = 100; std::cout <<value <<std::endl; // 100 } std::cout <<value <<std::endl; // 10 return 0; }
2カ所で value という同じ名前を持つ変数の内容を表示していますが、1回目は 100 、2回目は 10 と表示されます。1回目は直前で 100 に初期化しているため、何ら不自然なことはないのですが、同じ変数名でも2回目は 10 となっています。これは中括弧でくくられたブロックが局所的なスコープを持っているためです。関数の中で作ったローカル変数は関数の外から参照できないのと同様に、スコープ内で宣言した変数はスコープの外からは参照できなくなります。
むやみに多様するのは良くないと思いますが、これをうまく利用すると変数名の衝突が少なくなります。たとえば results や status などのように汎用的な意味の変数名を、シンボル重複を心配せずに使うことができるようになります。また、副作用としてリファクタリングがしやすくなります(ロジックの依存関係がわかりやすくなるため)。
Contributions