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

时间:2013-10-09 10:59:29

标签: c++ helper-functions

我试图从The C++ Programming Language by Bjarne Stroustrup了解C ++中的辅助函数。但是这本书没有解释任何关于它的内容以及在课堂上使用它的目的。我尝试在网上搜索它并找到this。我已经掌握了它的要点,但仍然不清楚辅助函数的真正目的是什么,何时应该使用它们,总体而言,什么是辅助函数?

4 个答案:

答案 0 :(得分:28)

“帮助函数” 不是您在标准中找到的术语,也不是一个确切的定义...标准提及“帮助程序类“”帮助模板“几次引用一个类,这不是由最终用户实例化的,但它提供了另一个类内部使用的有用功能。

辅助函数(我相信大多数人在说出来时的意思)通常用于包含一些有用的功能,这些功能将被重用,最有可能一次又一次。您可以创建辅助函数,用于许多不同的目的......

示例可能是任何类型的转换函数,例如将多字节编码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;
}

答案 1 :(得分:7)

CppCoreGuidline

对帮助函数有一个很好的定义
  

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

有关详细信息,您可以使用一个明确的示例检查paragraph,从中获取上引号。

答案 2 :(得分:1)

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

这只是“辅助功能”的一个例子。如果我错了,请纠正我的读者。谢谢!

答案 3 :(得分:0)

"助手功能"在Bjarne Stroustrups的书中有描述,我昨天刚刚读到它们。根据Stroustrup,类的良好设计应该将实现类的函数数量保持在最低限度。据你所知,你不想在一堂课中拥有50个功能 斯特劳斯。相反,你使用"帮助函数"使用类接口(调用成员函数)。他们或许(不确定)可以在共享命名空间中定义,以便为他们的"关系提供意义。你可以在第9章第9.7.5节

中找到书中的段落