C++ 中的辅助函数是什么?

问题描述 投票:0回答:5

我试图从 Bjarne Stroustrup 的《C++ 编程语言》中了解 C++ 中的“辅助函数”是什么。但这本书没有解释任何有关它以及在课堂上使用它的目的。我尝试在网络上搜索它并找到了this[注意:死链接]。我已经了解了它的要点,但仍然不清楚辅助函数的真正目的是什么,我什么时候应该使用它们,总的来说,什么是辅助函数?

c++ terminology
5个回答
37
投票

“辅助函数”不是标准中的术语,也没有确切的定义...标准多次提到“辅助类”“辅助模板”以供参考一个类,它并不意味着由最终用户实例化,但它提供了在另一个类内部使用的有用功能。

辅助函数(我相信大多数人所说的意思)通常是包含一些您将要重复使用的有用功能的函数,很可能会一遍又一遍地重复使用。您可以创建用于多种不同目的的辅助函数...

一个示例可能是任何类型的转换函数,例如将多字节编码

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;
}

9
投票

CppCoreGuidline有一个关于辅助函数的很好的定义:

辅助函数是一种不需要直接访问类的表示形式的函数(通常由类的编写者提供),但被视为类的有用接口的一部分。将它们放置在与类相同的命名空间中,使得它们与类的关系显而易见,并允许通过参数依赖查找来找到它们。

有关更多信息,您可以查看段落,其中包含一个清晰的示例,上面的引用来自该示例。


3
投票

Bjarne Stroustrups 书中描述了“辅助函数”,我昨天刚刚读到它们。根据 Stroustrup 的说法,良好的类设计应该将实现类的函数数量保持在最低限度。根据说法,你不想在一个类中拥有 50 个函数 斯特鲁斯特鲁普。相反,您使用使用类接口的“辅助函数”(调用成员函数)。它们也许(对此不确定)被定义在共享名称空间中,以赋予它们的“关系”意义。您可以在本书第9章第9.7.5节中找到该段落


2
投票

一个例子是您将在整个主函数中重用的输入验证函数。假设您有一个询问用户年龄的程序,因为年龄是一个大于 0 的整数,所以您需要有一个单独的函数来处理“cin >> users_age;”。如果输入满足条件语句则继续,否则要求用户重新输入年龄。

这只是“辅助函数”的一个示例。如果我错了请读者指正。谢谢!


0
投票

创建一个谓词函数,用于确定实数 Q 的整数部分是否大于 43。 在主函数中,创建一个实数向量,并将区间 [27.125, 31.75] 中的 90 个随机实数写入其中。然后,使用已知算法 (count_if) 和您的函数,计算并打印向量中整数部分大于 43 的数字数量。 使用 lambda 函数执行相同的任务

© www.soinside.com 2019 - 2024. All rights reserved.