У меня есть сомнения относительно частных методов и функций. Скажем, у меня есть некоторые утилиты, которые не обязательно должны быть внутри класса. Но те же самые методы требуют вызова других, которые я не хочу показывать пользователю. Например:
Suspect.h
namespace Suspect {
/**
* \brief This should do this and that and more funny things.
*/
void VerbalKint(void); // This is for you to use
}
Suspect.cpp
namespace Suspect {
namespace Surprise {
/**
* \brief The user doesn't need to be aware of this, as long
* the public available VerbalKint does what it should do.
*/
void KeyserSoze(void) {
// Whatever
}
} // end Surprise
void VerbalKint(void) {
Surprise::KeyserSoze();
}
}
Итак, этот макет работает. При включении Suspect.h
отображается только VerbalKint
.
Это может быть достигнуто также с использованием класса и маркировки VerbalKint
как static:
class Suspect {
public:
// Whatever
static void VerbalKint(void);
private:
static void KeyserSoze(void);
};
Я хотел бы знать, есть ли разница между этими двумя подходами. Лучше (быстрее, проще поддерживать), чем другой?
Каковы ваши мысли?