假设我有以下类(class):
class A {
private:
static double X;
};
double A::X = 0.0;
变量 A::X
实际上应该是静态的,因为 A
的所有实例必须在我所关注的上下文中共享相同的值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;
}
}
在我看来,无论我将这些 getter 和 setter 函数作为静态成员函数还是作为非静态成员函数添加到 A
中,都没有任何实际区别。这样对吗?
在此示例中,或更一般地,可能有什么原因更喜欢将此类 getter 和 setter 函数设为类的静态或非静态成员,而类的静态成员由它们控制访问?
最佳答案
- 如果没有声明对象,你可以调用静态方法
- 您的代码更具可读性:如果您有一个静态方法 getA,您就知道 A 是静态的
关于c++ - C++ 中静态类变量的静态或非静态 getter/setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20922101/