Y a-t-il une différence entre l'encapsulation à la fois du contenu de l'en-tête et du fichier cpp dans un espace de noms ou l'encapsulation uniquement du contenu de l'en-tête et l' utilisation de l'espace de noms dans le fichier cpp?
Par différence, j'entends toute sorte de pénalité de performance ou une 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?