"state" C++是什么意思?



当我在寻找C++函子的解释时,我看到了以下语句,"函子有几个好处。一个是与常规函数不同,它们可以包含状态。">

有人能向我解释一下"状态"在C++中的含义吗?非常感谢。

"state"是什么意思。。。

这个词有多种含义和上下文微妙之处。

以下是字典中这个词的一般定义:

在特定时间存在的条件或存在方式


。。。在C++中?

据我所知,这个词没有C++特定的含义。它不是语言指定的东西。其含义与一般编程或计算机科学中的含义相同。

以下是计算机科学的具体定义:

在信息技术和计算机科学中,如果一个系统被设计为记住之前的事件或用户交互,则它被描述为有状态的;记住的信息被称为系统的状态。

C++程序的状态主要由对象的表示组成。


"函子有两个好处。一个是与常规函数不同,它们可以包含状态。">

虽然这在实践中"足够正确",但这是一种简化。从技术上讲,正则函数可以"包含">全局状态。但这句话的作者可能忽略了这一点,因为全球状态是有问题的,应该避免。

假设您实际上在问在这种情况下意味着什么

这意味着函子(即实现()运算符的类的实例(可以存储和访问与其特定实例相关的信息。

一个正则函数只能访问传递给它的任何参数,加上全局变量等。

然而,带有函子的示例:

#include <iostream>
struct Counter {
    int operator()() { return ++count; }
  private:
    int count = 0;
};
Counter count1;
Counter count2;
std::cout << count1() << std::endl; // 1
std::cout << count1() << std::endl; // 2
std::cout << count1() << std::endl; // 3
std::cout << count2() << std::endl; // 1
std::cout << count2() << std::endl; // 2
std::cout << count2() << std::endl; // 3
std::cout << count1() << std::endl; // 4
std::cout << count2() << std::endl; // 4

这里,实际计数封装在函子实例中——它是函子的状态

最新更新