2016-11-05 165 views
3

我在我的班级中有一个static const std::vector<SomeType>字段。我有两个使用此字段的private方法(搜索方法)。 他们不使用我班的其他成员。它们应该定义为static还是常规方法?静态方法或使用静态字段的非静态方法

我应该选择什么?什么是优点/缺点?

回答

3

仅引用静态成员的方法通常应定义为static。这使您可以在不创建类的实例的情况下访问这些方法,还可以从静态上下文(例如,从非成员函数)访问这些方法。

这个规则的唯一例外是当你需要从一个成员函数定义的虚拟的这个访问。在这种情况下,你没有选择使你的函数成为静态的,因为静态函数不能覆盖虚拟函数。

+0

开始部分'因为'是*非sequitur *。是否可以重写静态方法与您是否可以从虚拟方法调用它们无关。 – EJP

+0

@EJP我没有说静态成员函数不能被覆盖,我只是说静态成员函数不能覆盖基类中的虚拟函数。换句话说,如果您正在编写函数作为基类虚函数的覆盖,则即使只访问静态成员,也需要使其成为非静态函数。 – dasblinkenlight