Y a-t-il une différence entre encapsuler à la fois le contenu de l'en-tête et du fichier cpp dans un espace de noms ou encapsuler uniquement le contenu de l'en-tête et ensuite utiliser l'espace de noms dans le fichier cpp?
Par différence, je veux dire toute pénalité de performance de tri ou sémantique légèrement différente qui peut causer des problèmes ou tout ce dont je dois être conscient.
Exemple:
// header
namespace X
{
class Foo
{
public:
void TheFunc();
};
}
// cpp
namespace X
{
void Foo::TheFunc()
{
return;
}
}
CONTRE
// header
namespace X
{
class Foo
{
public:
void TheFunc();
};
}
// cpp
using namespace X;
{
void Foo::TheFunc()
{
return;
}
}
S'il n'y a pas de différence, quelle est la forme préférée et pourquoi?