【问题标题】:What does "state" mean in C++?C++ 中的“状态”是什么意思?
【发布时间】:2020-03-08 00:47:35
【问题描述】:

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

谁能向我解释一下 C++ 中的“状态”是什么意思?非常感谢。

【问题讨论】:

  • 您能否链接到该声明,或提供该声明的上下文? “状态”通常意味着某种记忆。
  • 这能回答你的问题吗? C++ functor advantage - holding the state
  • imalogic.com/blog/2017/05/12/c-functor 这看起来像是声明的来源。
  • 在计算机科学中,“状态”是指依赖于系统历史的信息或数据。在 C++ 中,状态的概念是使用变量或对象来表示的,这些变量或对象可以表示一个或多个对程序的某些部分有意义的不同值。因此,int 类型的变量或结构成员代表某种状态 - 例如,更改 int 的值代表状态的变化(例如,它会影响使用它的代码)。

标签: c++ state functor


【解决方案1】:

“状态”是什么意思...

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

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

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


...在 C++ 中?

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

这是一个特定于计算机科学的definition

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

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


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

虽然这在实践中“足够真实”,但它只是一种简化。从技术上讲,常规函数可以“包含”全局状态。但这句话的作者可能忽略了这一点,因为全局状态是有问题的,应该避免。

【讨论】:

    【解决方案2】:

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

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

    常规函数只能访问传入的任何参数,以及全局变量等。

    然而,一个仿函数的例子:

    #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
    

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

    【讨论】:

      猜你喜欢
      • 2013-08-30
      • 2011-06-18
      • 2017-06-21
      • 2014-01-30
      • 2018-07-05
      • 2021-07-03
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多