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

What does "state" mean in C++?

当我在寻找C++仿函数的解释时,我看到了下面的语句, "There are a couple of nice things about functors. One is that unlike regular functions, they can contain state."

任何人都可以向我解释 "state" 在 C++ 中的含义吗?非常感谢。

What does “state” mean ...

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

这是来自 dictionary 的词的一般定义:

a condition or way of being that exists at a particular time


... in C++?

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

这是计算机科学的具体内容definition:

In information technology and computer science, a system is described as stateful if it is designed to remember preceding events or user interactions; the remembered information is called the state of the system.

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


"There are a couple of nice things about functors. One is that unlike regular functions, they can contain state."

虽然这 "true enough" 实际上是一种简化。从技术上讲,常规函数可以 "contain" global 状态。但这可能被引用的作者忽略了,因为全局状态是有问题的,应该避免。

假设您实际上是在问在这种情况下是什么意思:

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

常规函数只能访问传递给它的任何参数,加上全局变量等

但是带有仿函数的示例:

#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

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