返回静态变量的成员函数

6

一个返回 static 成员变量的成员函数,是否也应该是 static 的?

例如:

struct T {
   static int i;
   static int getNumber() {
       return i;
   }
};

getNumber 方法应该是静态的还是非静态的?

2个回答

8
通常是可以的。 如果变量没有任何实例状态,那么函数在返回它之前可能执行什么可能的实例逻辑呢?

@Ben,我在发表评论时想到了其他事情(即通过不可靠的方式跟踪实例计数)...无论如何-已删除有问题的评论... - Nim
@Nim:我在想是否有人会提出这样的问题。你没有疯。但是在一个简单的getter中,你很可能永远不想这样做。 - Lightness Races in Orbit

3

这不是强制性的。您可以编写一个返回静态变量的成员函数。反过来是不行的(即编写一个返回实例变量的静态函数)。

作为一个需要返回静态成员的案例,想象一种情况,该类持有一个状态变量,并根据该状态返回其中一个静态值。这并非是良好的设计,但这并非完全不可想象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接