The reason is simple:
when you want to determine a block of code it's easier if opening/closing braces are on the same level. That way you just have a go up some lines and you got it, otherwise your eyes have to stray all over the code

@coder777, do you really think you need {}s to tell where a block is? Can you say that

1234

int main()
std::cout << "O Hai Thar";
return 0;

is somehow unclear? Before you say that this will get confusing in a function of 100 loc and 10 levels of indentation, I'll remind you that if you have that sort of functions in your code, you ought to be punched.

Because in C# there are Interfaces, it was hard at first getting used to putting the class members stuff outside of the class. As in C# everything is inside the class braces. If you've never used C# I will not go in details here as it is beyond the scope of this thread. But feel free to look up C# interfaces on MSDN.