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

标签 c++ class static setter getter

假设我有以下类(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 函数设为类的静态或非静态成员,而类的静态成员由它们控制访问?

最佳答案

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

关于c++ - C++ 中静态类变量的静态或非静态 getter/setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20922101/

相关文章:

java - 在 Java 中什么是更快地传递参数或使用静态变量?

c++ - 为什么同时包含 <iostream> 和 <fstream>

c++ - Sqlite3 Select 查询慢,而插入/更新/删除没有问题

c++ - 帮助宏功能

jquery - 如何覆盖以前的 onClick css 类更改 (jQuery)

java - 将类(对象)设置为变量

java - 为什么我不能在 Java 中使用 "static import"和 "equals"方法?

c++ - 在 C++ 中连接字符串

python - 在python中将类返回给自身

C main() 函数可以是静态的吗?