Предположим, у меня есть следующие файлы:
// SomeClass.h
namespace Example
{
class SomeClass
{
...
SomeClass someFunction();
...
};
}
// SomeClass.cpp
Example::SomeClass Example::SomeClass::SomeFunction()
{
...
}
Были ли какие-либо последствия для добавления "using namespace Example"? перед пространством имен в SomeClass.h, чтобы исключить необходимость добавления оператора области "Example ::" к вещам в файле Someclass.cpp? Даже если не будет никаких козней, будет ли это считаться плохой практикой кодирования?
Это изменение будет следующим:
// SomeClass.h
using namespace Example;
namespace Example
{
class SomeClass
{
...
SomeClass someFunction();
...
};
}
// SomeClass.cpp
SomeClass SomeClass::SomeFunction()
{
...
}
Нет, пожалуйста, не using namespace...;
в глобальной области. Вы можете просто сделать это:
SomeClass.h
// using namespace Example; // never here please
namespace Example
{
using namespace OtherExample; // this is okay (not global)
class SomeClass
{
...
SomeClass someFunction();
...
};
}
SomeClass.cpp
namespace Example // same as in .h
{
using namespace OtherExample; // this is okay (not global)
SomeClass SomeClass::SomeFunction()
{
...
}
}
И я также предлагаю потенциально огромные пространства имен, такие как std::
никогда не использовать using namespace std;
даже внутри ваших собственных пространств имен, потому что они просто перетаскивают слишком много общих имен символов.
using namesapce Example;
до того, как пространство имен введено.