gpt4 book ai didi

c++ - 使用静态函数变量与类变量来存储一些状态

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:22 24 4
gpt4 key购买 nike

假设我有这样的功能:

void processElement() {
doSomething(someArray[lastProcessedElement + 1]);
}

问题是,每次调用此函数时,我都需要存储调用 doSomething 的最后一个元素。所以在这里我有两个选择:

  • 我可以创建一个名为 lastProcessedElement 的私有(private)类变量,并在每次调用该函数时递增它的值。这种方法似乎最常见。所以代码可以是这样的:

    class Foo {
    int lastProcessedElement = 0;

    public:
    void processElement() {
    doSomething(someArray[++lastProcessedElement]);
    }
    }
  • 作为第二种选择,我可以在函数中创建一个静态变量并每次递增它:

    // Class is not important here, so the function is:
    void processElement() {
    static int lastProcessedElement = 0;
    doSomething(someArray[++lastProcessedElement]);
    }

第一个解决方案增加了一点我不想要的复杂性。我喜欢保持原样。

我知道第二种解决方案只有在该类只有一个实例时才有效。

那么使用静态变量方法是一个很好的解决方案吗?多实例类是否有任何在线解决方案? (对于这个特定的数组元素索引问题可以有一个解决方案,但我只是编造的,我说的是为下一次函数调用存储一些值)

最佳答案

您已经知道为什么函数作用域静态是一个坏主意:

only works if that class have only one instance

这是一个糟糕的设计限制。

只需将状态保持为常规类成员变量即可。

关于c++ - 使用静态函数变量与类变量来存储一些状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38353035/

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