gpt4 book ai didi

c++ - STL 函数式——为什么?

转载 作者:可可西里 更新时间:2023-11-01 15:03:30 26 4
gpt4 key购买 nike

在 C++ 标准模板库中,有一个“功能”部分,其中许多类重载了它们的 () 运算符。

在C++中将函数作为对象使用有什么便利吗?

为什么我们不能只使用函数指针呢?有什么例子吗?

最佳答案

当然,人们总是可以使用函数指针而不是函数对象,但是函数对象相对于函数指针有一些优势,即:

  • 更好的性能:

最明显和最重要的优势之一是它们更有可能产生更好的性能。在函数对象的情况下,更多细节在编译时可用,以便编译器可以准确地确定并因此内联要调用的函数,这与函数指针的情况不同,在函数指针的情况下,指针的取消引用使编译器难以确定实际函数将被调用。

  • 函数对象是智能函数:

函数对象可能有其他成员函数和属性。这意味着函数对象有状态。事实上,同一个函数,用一个函数对象表示,可能同时有不同的状态。这对于普通函数是不可能的。函数对象的另一个优点是您可以在使用/调用它们之前在运行时初始化它们。

  • >通用编程的力量:

只有当它们的签名不同时,普通函数才可以有不同的类型。然而,函数对象可以有不同的类型,即使它们的签名相同。事实上,函数对象定义的每个函数行为都有自己的类型。这是对使用模板的泛型编程的重大改进,因为可以将功能行为作为模板参数传递。

关于c++ - STL 函数式——为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628219/

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