7

有没有区别

class C {
    static int func();
};

class C {
    int static func();
};

我正在尝试删除其他人代码库中的关键字static 。在我这样做之前,我想确保我理解第二个示例的含义。

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

4

2 回答 2

10

没有区别。static关于函数声明适用于函数。指针不会隐式传递给该函数,因此如果不将对象显式传递给它,就无法访​​问该函数内部的非静态类成员
this

要删除第static一个,您应该知道并理解以这种方式设计的目的。如果不考虑这一点,您肯定会产生很大比例的代码气味。

于 2013-04-19T14:21:37.190 回答
3

是的,在第一种情况下,关键字static在 type 之前int,在第二种情况下,它们是相反的。但是,就像 C 和 C++ 中的许多东西一样,没有语义差异。因此,除了“化妆品”之外,没有任何区别。

我不确定您为什么要static作为一般规则在类中删除 - 声明成员函数可能是有充分理由的static

于 2013-04-19T14:21:53.130 回答