Что такое вспомогательные функции в С++?
Я пытался понять вспомогательные функции в С++ от The C++ Programming Language by Bjarne Stroustrup
. Но книга ничего не объяснила и не использовала ее в классах. Я попытался найти его в Интернете и нашел этот. У меня есть суть этого, но все еще неясно, какова истинная цель вспомогательных функций, когда я должен использовать их и в целом, какие вспомогательные функции?
Ответы
Ответ 1
"вспомогательная функция" не является термином, который вы найдете в стандарте, и не имеет точного определения... Стандарт упоминает "вспомогательный класс" или "вспомогательный шаблон" несколько раз, чтобы ссылаться к классу, который не предназначен для инстанцирования конечными пользователями, но он обеспечивает полезную функциональность, внутренне используемую в другом классе.
Функции помощника (что я считаю большинством людей, когда говорят), обычно выполняют функции, которые обертывают некоторые полезные функции, которые вы собираетесь использовать повторно, скорее всего, снова и снова. Вы можете создавать вспомогательные функции, предназначенные для использования в самых разных целях...
Примером может быть любая функция преобразования, например функция преобразования многобайтовых закодированных std::string
в std::wstring
:
std::wstring s2ws(const std::string& str)
{
int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
std::wstring wstrTo( size_needed, 0 );
MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
return wstrTo;
}
Ответ 2
Существует отличное определение вспомогательной функции из CppCoreGuidline:
Вспомогательная функция - это функция (обычно предоставляемая автором класса), которая не нуждается в прямом доступе к представлению класса, но рассматривается как часть полезного интерфейса для класса. Размещение их в том же пространстве имен, что и класс, делает их отношение к классу очевидным и позволяет находить их путем поиска зависимых от аргументов.
Для получения дополнительной информации вы можете проверить пункт с ясным примером, из которого берется верхняя цитата.
Ответ 3
Примером может служить функция проверки ввода, которую вы будете повторно использовать во всей основной функции. Скажем, у вас есть программа, которая запрашивает возраст пользователя, так как возраст является целым числом > 0, вам потребуется отдельная функция, которая заботится о "cin → users_age;". Если вход удовлетворяет условию, тогда продолжайте, иначе попросите пользователя повторно ввести свой возраст.
Это просто пример "вспомогательной функции". Исправьте меня, если я ошибаюсь. Спасибо!