C++中静态类变量的静态或非静态getter/setter

syn*_*tik 4 c++ getter setter static class

假设我有以下课程:

class A {
private:
    static double X;
};

double A::X = 0.0;
Run Code Online (Sandbox Code Playgroud)

变量A::X确实应该是静态的,因为A在我关注的上下文中,must的所有实例都具有相同的值A::X.

现在,我的问题是是否为A::X静态创建getter和setter函数.它们的定义如下:

void A::setValue(const double x) {
#pragma omp critical
{
    if(x<0.0||x>1.0)
        // custom macro call to raise exception

    X = x;
}
}

double A::getValue() {
#pragma omp critical
{
    return X;
}
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我是否将这些getter和setter函数添加A为静态或非静态成员函数绝对没有实际区别.这是正确的吗?

在这个例子中,或者更一般地说,有什么理由可以优先考虑这样的getter和setter函数是静态成员还是非静态成员,他们控制的静态成员可以访问?

Gab*_*iel 5

  1. 如果没有声明对象,你可以调用静态方法
  2. 你的代码更具可读性:如果你有一个静态方法getA,你知道A是静态的