gpt4 book ai didi

c++ - 这个模式 : using a struct to contain a single method 有什么意义

转载 作者:可可西里 更新时间:2023-11-01 17:09:52 27 4
gpt4 key购买 nike

在我们的代码中,我们有很多这种模式的情况:

class outerClass
{
struct innerStruct
{
wstring operator()( wstring value )
{
//do something
return value;
}
};

void doThing()
{
wstring initialValue;
wstring finalValue = innerStruct()( initialValue );
}
};

这样做的好处是什么:

class outerClass
{
wstring changeString( wstring value )
{
//do something
return value;
}

void doThing()
{
wstring initialValue;
wstring finalValue = changeString( initialValue );
}
};

最佳答案

具有 operator() 的结构通常称为仿函数,有效地充当“函数对象”。您可以将这些仿函数与许多 API 一起使用,尤其是 STL,比使用典型的函数指针更容易、更可靠。仿函数是对象,它们可以包含状态,并在构造过程中进行参数化以创建一个独立的专用处理程序。

我假设您经常在 outerClass 中有代码想要使用这些库函数(即 std::for_each),因此开发了这种模式以使其变得简单。如果您从不使用仿函数,那么是的,这种语法毫无意义且难以阅读(并且可以按照您的建议进行替换)。

编辑:您可能喜欢 Question 317450 , 关于 operator()。

关于c++ - 这个模式 : using a struct to contain a single method 有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/921806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com