"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
这里,实际计数封装在仿函数实例中——它是仿函数的状态。
当我在寻找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
这里,实际计数封装在仿函数实例中——它是仿函数的状态。