成员方法声明中* static *关键字的位置

时间:2013-04-19 14:19:36

标签: c++

之间有什么区别吗?
class C {
    static int func();
};

class C {
    int static func();
};

我正在尝试在其他人的代码库中删除关键字 static 。我想确保在我这样做之前理解第二个例子意味着什么。

[编辑]删除 static 的原因:C是一个没有成员变量且充满静态方法的“类”。我认为将“C”作为具有普通函数而不是类的命名空间更为合适。

2 个答案:

答案 0 :(得分:10)

没有区别。函数声明中的static适用于该函数 this指针不会隐式传递给此函数,因此您无法在不显式传递对象的情况下访问此函数内的非静态类成员。

要首先删除static,您应该了解并了解以这种方式设计的目的。如果不考虑这一点,你只需创造一个巨大比例的代码味道。

答案 1 :(得分:3)

是的,在第一种情况下,关键字static位于类型int之前,在第二种情况下,它们是相反的方式。但是,像C和C ++中的许多东西一样,没有语义差异。所以,除了“美容”之外,没有区别。

我不确定为什么你想要删除类中的static作为一般规则 - 可能有一个很好的理由来声明成员函数static