Я перехожу на C ++ из C, и первое, что я заметил, это избыточность прототипирования внутри пространства имен.Я пытаюсь использовать функциональность пространств имен для четкой маркировки моих дополнений / модификаций.
namespace ns {
void sayHello (void); //<-- NOT REQUIRED, BUT IS THERE ANY PURPOSE?
void sayHello (void) {
std::cout << "Hello world!";
return;
}
}
int main(int argc, char *argv[]) {
ns::sayHello();
}
Раньше в C было неплохо иметь прототип, чтобы вам не требовалось писатьфункции "выше" main () в источнике.Мне кажется, что пространства имен должны быть определены перед использованием, поэтому любые вложенные функции также должны быть написаны перед использованием.
Я только запускаю C ++ и хочу начать правильно.Я читал несколько учебных пособий через Интернет, но они действительно не упоминают эту тему.Я знаю, что это "просто", но, пожалуйста, избавьте меня от лишних голосов и отразите комментарии.Если кто-то в состоянии, я был бы признателен за более глубокое обсуждение того, является ли это устаревшим, и / или сценарии, которые могут в конечном итоге кусать нового разработчика C ++.