下面是一个简单类的两个实现,可用于计算一系列值的运行平均值。一个在成员函数中使用局部静态变量,另一个使用私有成员变量。
局部静态变量将存储在静态内存中,并且可以说是稍微更具可读性,因为该变量是在使用它的地方声明的。私有类变量将存储在堆栈中。
是否有任何其他差异,例如。关于哪个被认为是更好的做法的绩效或明确指南?
class MyClassStatic {
public:
double update_average(const double val) {
static double total = 0,
n = 0;
total += val;
n += 1;
return total / n;
}
};
class MyClassPrivate {
public:
double update_average(const double val) {
total_ += val;
n_ += 1;
return total_ / n_;
}
private:
double total_ = 0,
n_ = 0;
};