【发布时间】:2020-01-17 11:15:04
【问题描述】:
正如this Q&A 中所报告的,const 静态成员函数在 C++ 中是/不可用的。从那以后(2011 年)有什么变化吗?
是否有另一种方法可以让静态成员函数不修改其类的静态成员?
类似(伪代码):
class C
{
static int a;
public:
static void Incr() { ++a; }
static int Ret() const { return a; }
};
int C::a = 0;
我需要从另一个类的 const 成员函数中调用 [const] 静态成员函数。
【问题讨论】:
-
您可以将所有静态数据移动到一个类的静态实例中,并拥有该类的 const 成员函数。
-
在一般情况下,您无法真正检查全局变量的 constness。想象一下
static void C::Foo() const { ::bar(); Ret(); }和void ::bar() {C::Incr();}。 -
如果你停止使用全局状态,所有这些问题都会消失,就像@Brian 建议的那样。
标签: c++ constants static-methods