using Declarations, ie:
1 2 3
|
using std::cout;
using std::cin;
using std::endl
|
add
names to the scope in which they are declared. The effect of this is:
» a compilation error occurs if the same
name is declared elsewhere in the same scope;
» if the same
name is declared in an enclosing scope, the the name in the namespace hides it.
The using directive, ie
using namespace std;
, does not add a
name to the current scope, it only makes the
names accesable from it. This means that:
» If a
name is declared within a local scope it hides the
name from the namespace;
» a
name in a namespace hides the same name from an enclosing scope;
» a compilation error occurs if the same name is made visible from multiple namespaces or a name is made visible that hides a name in the global name space.
So, to my mind, using Declarations are better than using directives.