c++ - 在 C++ 中使用成员变量或静态变量?

标签 c++

<分区>

我有一个变量只在一个函数中使用。该变量应在函数调用之间保持其值,因此它应该是静态变量。有两种实现方式。一种是声明为成员变量:

class A{
private:
   void foo();
   int i;
}
// i is initialized to 0 in constructor
void A::foo()
{
    i++;
    if (i > 5)
        i = 0;
}

另一种是在函数内部声明一个静态变量:

void A::foo()
{
    static int i;
    i++;
    if (i > 5)
        i = 0;
}

我想知道哪个更适合使用。不涉及赛车条件。

最佳答案

我在问题中看到了一个误解:第一个没有声明变量 static。只有第二个会。在第一种情况下,变量是一个实例变量,即类的不同实例将有自己的变量,但在第二种情况下,它是(通常称为)类变量,这意味着它被共享所有 实例。在您提出任何进一步的问题之前,您必须先理解这种差异。

至于哪个更好,取决于您要如何/为什么要使用它,这在您的问题中并不清楚。也不清楚为什么要使用类和非静态成员函数。

关于c++ - 在 C++ 中使用成员变量或静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25479592/

相关文章:

c++ - 来自原始指针的 QSharedPointer

C++11 标准——从哪里得到它?

c++ - 使用 Qt 5.8 构建 Tesseract OCR

c++ - 为什么我尝试在结构内的 vector 内添加到结构内的 vector 会失败?

c++ - 如何检索具有完整路径的文件名以将数据写入其中

c++ - 如何在高于 2D 的维度上旋转、旋转、螺旋

c++ - 在C++中设置迭代器

c++ - const 引用转换为非常量后的行为

C++将文件中的文本放入字符

python - 比较 Python、Numpy、Numba 和 C++ 的矩阵乘法