小编isa*_*ert的帖子

使用静态函数变量vs类变量来存储某些状态

可以说我有这样的功能:

void processElement() {
    doSomething(someArray[lastProcessedElement + 1]);
}
Run Code Online (Sandbox Code Playgroud)

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

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

    class Foo {
        int lastProcessedElement = 0;     
    
        public:  
        void processElement() {
            doSomething(someArray[++lastProcessedElement]);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 作为第二个选项,我可以在函数中创建一个静态变量并每次递增它:

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

第一个解决方案增加了一些我不想要的复杂性.我喜欢把东西放在原地.

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

那么使用静态变量法是一个很好的解决方案?是否有多实例类的在线解决方案?(可以有一个解决这个特定的数组元素索引的东西,但我刚刚做了,我说的是为函数的下一次调用存储一些值)

c++ static-variables class-variables

5
推荐指数
1
解决办法
106
查看次数

标签 统计

c++ ×1

class-variables ×1

static-variables ×1