我在看一个会员功能
int funct(int x) const;
我想知道是否
static int funct(int x);
会更好。
如果成员函数不使用任何成员变量,那么它应该是静态的。有什么东西可以阻止这个吗?
答案 0 :(得分:22)
假设这是C ++,声明为const的函数表示它不打算更改调用它的实例上的数据成员,即this指针。既然有办法逃避这种做法,那就不是保证,只是宣言。
静态函数不能在特定实例上运行,因此不会使用“this”指针。因此,它是一种非常天真的“常量”。
如果您的方法不需要绑定到特定实例,则将其设置为静态是有意义的。
但是,如果您的方法是多态的 - 也就是说,您根据调用它的对象的实例提供了不同的实现,那么它不能是静态的,因为它依赖于特定的实例。
答案 1 :(得分:7)
如果成员函数不使用任何成员变量,通常值得提出一个问题:
“这首先需要成为成员函数吗?”